CREATE OR REPLACE PACKAGE ackermann IS
/* File: ackermann-memo.pls
Explicit memo-fn version of ackermann's function
Without memorization:
Ackermann(3,10) = 8189
44698325 calls
With memorization:
Ackermann(3,10) = 8189
20481 calls, 4103 cache hits
(functional languages can do this transparently by currying with
the memo() function, eg "let ackermann = memofn(ackermann);" )
*/
« Headers »
CREATE OR REPLACE PACKAGE BODY ackermann IS
cache memo2d;
« memofn »END;
set serveroutput on
BEGIN DBMS_Output.put_line('Ackermann(3, 10) = ' || ackermann.memofn(3, 10)); END;