RosettaCodeData/Task/Ackermann-function/Yabasic/ackermann-function-2.basic

29 lines
510 B
Plaintext

sub ack(m, n)
if m=0 then
return n+1
elsif m=1 then
return n+2
elsif m=2 then
return 2*n+3
elsif m=3 then
return 2^(n+3)-3
elsif m>0 and n=0 then
return ack(m-1,1)
else
return ack(m-1,ack(m,n-1))
end if
end sub
sub Ackermann()
local i, j
for i=0 to 3
for j=0 to 10
print ack(i,j) using "#####";
next
print
next
print "ack(4,1) ";: print ack(4,1) using "#####"
end sub
Ackermann()