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]
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.