From 17b65ba969695533b64d95dfdcdb49a0e1d68d89 Mon Sep 17 00:00:00 2001 From: moshix Date: Mon, 13 Feb 2023 12:10:27 +0100 Subject: [PATCH] Create ackerman.pli --- ackerman.pli | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 ackerman.pli diff --git a/ackerman.pli b/ackerman.pli new file mode 100644 index 0000000..65542ae --- /dev/null +++ b/ackerman.pli @@ -0,0 +1,32 @@ +/******************************************************/ +/* This program evaluates the Ackermann function */ +/* A(m,n), and increases the size of the stack */ +/* because of the large number of recursive calls. */ +/******************************************************/ +ack: + procedure options(main,stack(2000)); + declare + (m,maxm,n,maxn) fixed; + put skip list('Type max m,n: '); + get list(maxm,maxn); + put skip + list(' ',(decimal(n,4) do n=0 to maxn)); + do m = 0 to maxm; + put skip list(decimal(m,4),':'); + do n = 0 to maxn; + put list(decimal(ackermann(m,n),4)); + end; + end; + stop; + + ackermann: + procedure(m,n) returns(fixed) recursive; + declare (m,n) fixed; + if m = 0 then + return(n+1); + if n = 0 then + return(ackermann(m-1,1)); + return(ackermann(m-1,ackermann(m,n-1))); + end ackermann; + +end ack;