RosettaCodeData/Task/Ackermann-function/Forth/ackermann-function-2.fth
Ingy döt Net 86c034bb8b new files
2013-04-10 12:38:42 -07:00

14 lines
443 B
Forth

: ackermann ( m n -- u )
over ( case statement)
0 over = if drop nip 1+ else
1 over = if drop nip 2 + else
2 over = if drop nip 2* 3 + else
3 over = if drop swap 5 + swap lshift 3 - else
drop swap 1- swap dup
if
1- over 1+ swap recurse recurse exit
else
1+ recurse exit \ allow tail recursion
then
then then then then
;