22 lines
478 B
SQL
22 lines
478 B
SQL
DECLARE
|
|
|
|
FUNCTION ackermann(pi_m IN NUMBER,
|
|
pi_n IN NUMBER) RETURN NUMBER IS
|
|
BEGIN
|
|
IF pi_m = 0 THEN
|
|
RETURN pi_n + 1;
|
|
ELSIF pi_n = 0 THEN
|
|
RETURN ackermann(pi_m - 1, 1);
|
|
ELSE
|
|
RETURN ackermann(pi_m - 1, ackermann(pi_m, pi_n - 1));
|
|
END IF;
|
|
END ackermann;
|
|
|
|
BEGIN
|
|
FOR n IN 0 .. 6 LOOP
|
|
FOR m IN 0 .. 3 LOOP
|
|
dbms_output.put_line('A(' || m || ',' || n || ') = ' || ackermann(m, n));
|
|
END LOOP;
|
|
END LOOP;
|
|
END;
|