Tabela wartości m\n 0 1 2 3 4 n 0 1 2 3 4 5 1 2 3 4 5 6 2 3 5 7 9 11 3 5 13 29 61 125 4 13 65533 265536 – 3 (3, 265536 – 3) (3, (4, 3)) 5 65533 (4, 65533) (4, (5, 1)) (4, (5, 2)) (4, (5, 3)) 6 (5, 1) (5, (5, 1)) (5, (6, 1)) (5, (6, 2)) (5, (6, 3))
Wartość (4,2) jest dużo większa niż liczba cząsteczek w obserwowalnym wszechświecie podniesiona do dwusetnej potęgi.
Przykłady Pseudokod (oraz kod w języku Python) algorytmu obliczającego funkcję Ackermanna:
def Ack(m, n): if m==0: return n+1 if m>0 and n==0: return Ack(m-1, 1) if m>0 and n>0: return Ack(m-1, Ack(m, n-1)) Kod metody obliczającej funkcję w przykładowym języku funkcyjnym, np. Erlangu: ack(0,N) -> N+1; ack(M,0) -> ack(M-1, 1); ack(M,N) -> ack(M-1, ack(M, N-1)).
Trudność przy obliczeniach funkcji Ackermanna leży głównie w złożoności wywołań rekurencyjnych, które łatwo mogą doprowadzić do przepełnienia stosu (ang. stack overflow). Podczas wykonywania obliczenia dochodzi wielokrotnie do wywołań funkcji z identycznymi argumentami. W poniższym przykładzie między innymi A(1, 1), A(1, 0), A(0, 2) zostają wywołane dwukrotnie. Odpowiednia implementacja funkcji może wykorzystać powtarzające się instrukcje do znacznego skrócenia procesu obliczania. Przykładowo wartość A(2, 0) jest równa 3, co jest widoczne w wierszu 6.