Ackermann functions

A convenient example is

f[1, n_] := n; f[m_, 1] := f[m - 1, 2]

f[m_, n_] := f[m - 1, f[m, n - 1] + 1]

The original function constructed by Wilhelm Ackermann around 1926 is essentially

f[1, x_, y_] := x + y;

f[m_, x_, y_] := Nest[f[m - 1, x, #] &, x, y - 1]

or

f[m_, x_, y_]:= Nest[Function[z, Nest[#, x, z - 1]] &, x + # &, m - 1][y]

For successive m (following the so-called Grzegorczyk hierarchy) this is x + y, x y, x^{y}, Nest[x^{#} &, 1, y], .... f[4, x, y] can also be written Array[x &, y, 1, Power] and is sometimes called tetration and denoted x↑↑y.