13 lines
932 B
Plaintext
13 lines
932 B
Plaintext
The '''[[wp:Ackermann function|Ackermann function]]''' is a classic recursive example in computer science. It is a function that grows very quickly (in its value and in the size of its call tree). It is defined as follows:
|
|
|
|
:<math> A(m, n) =
|
|
\begin{cases}
|
|
n+1 & \mbox{if } m = 0 \\
|
|
A(m-1, 1) & \mbox{if } m > 0 \mbox{ and } n = 0 \\
|
|
A(m-1, A(m, n-1)) & \mbox{if } m > 0 \mbox{ and } n > 0.
|
|
\end{cases}
|
|
</math>
|
|
<!-- <table><tr><td width=12><td><td><math>n+1</math><td>if <math>m=0</math> <tr><td> <td><math>A(m, n) =</math> <td><math>A(m-1, 1)</math> <td>if <math>m>0</math> and <math>n=0</math> <tr><td><td><td><math>A(m-1, A(m, n-1))</math> <td> if <math>m>0</math> and <math>n>0</math></table> -->
|
|
|
|
Its arguments are never negative and it always terminates. Write a function which returns the value of <math>A(m, n)</math>. Arbitrary precision is preferred (since the function grows so quickly), but not required.
|