Почему этот код печатает None?
Функцию Аккермана пытались реализовать с помощью следующего кода
def A(m, n):
if m == 0:
return n + 1
elif m > 0 and n == 1:
A(m - 1, 1)
elif m > 0 and n > 0:
A(m - 1, A(m, n - 1))
print A(4, 5)
1 ответ
Решение
Ваша функция ничего не возвращает для 2 из 3 ветвей if
заявления; только если m == 0
Вы явно возвращаете значение.
Вам также необходимо вернуть результаты рекурсивных вызовов:
def A(m, n):
if m == 0:
return n + 1
elif m > 0 and n == 1:
return A(m - 1, 1)
elif m > 0 and n > 0:
return A(m - 1, A(m, n - 1))
Без явного возврата функция заканчивается возвращаемым значением по умолчанию: None
,