RosettaCodeData/Task/Ackermann-function/CLU/ackermann-function.clu

20 lines
497 B
Plaintext

% Ackermann function
ack = proc (m, n: int) returns (int)
if m=0 then return(n+1)
elseif n=0 then return(ack(m-1, 1))
else return(ack(m-1, ack(m, n-1)))
end
end ack
% Print a table of ack( 0..3, 0..8 )
start_up = proc ()
po: stream := stream$primary_output()
for m: int in int$from_to(0, 3) do
for n: int in int$from_to(0, 8) do
stream$putright(po, int$unparse(ack(m,n)), 8)
end
stream$putl(po, "")
end
end start_up