На этом шаге мы рассмотрим реализацию этой функции.
Один из самых популярных примеров вложенной рекурсии - функция Аккермана, определяемая следующим образом:
n + 1, если m = 0
A(n, m) = A(m - 1, 1), если m > 0 и n = 1 (11.1)
A(m - 1, A(m, n - 1)), если m > 0 и n > 1
| 1 2 3 4 5 6 7 |
def ack(m, n): if m == 0: return n + 1 elif n == 0: return ack(m - 1, 1) else: return ack(m - 1, ack(m, n - 1)) |
На следующем шаге мы рассмотрим функцию-91 Маккарти.