Ackermann(m, n)
1. if A[m,n] >= 0
2. then return A[m, n];
3. else if m = 0 and n > 0
4. then A[m,n] <- n + 1;
5. else if n = 0 and m > 0
6. then A[m,n] <- Ackermann(m-1, 1);
7. else if n > 0 and m > 0
8. then A[m,n] <- Ackermann(m-1, Ackermann(m, n-1));
9. return A[m, n];