17 lines
337 B
Plaintext
17 lines
337 B
Plaintext
Ackermann := proc( m :: nonnegint, n :: nonnegint )
|
|
option remember; # optional automatic memoization
|
|
if m = 0 then
|
|
n + 1
|
|
elif m = 1 then
|
|
n + 2
|
|
elif m = 2 then
|
|
2 * n + 3
|
|
elif m = 3 then
|
|
8 * 2^n - 3
|
|
elif n = 0 then
|
|
thisproc( m - 1, 1 )
|
|
else
|
|
thisproc( m - 1, thisproc( m, n - 1 ) )
|
|
end if
|
|
end proc:
|