Хорошо, так что этот кусок кода из практического вопроса в моей школе. Мы должны мысленно проанализировать код и проверить ответ.
Когда я впервые разобрал его, я получил 4. Я скопировал код и запустил его через IDLE и получил 8. Я запустил отладчик и увидел, что else: return зациклирует оператор if else до x == 0
, а затем он возвращает 1.
Я не понимаю, как возвращается 1 до 8.
def foo(x=5):
if x == 0:
return 1
else:
return 2*foo(x-1)
print(foo(3))
Я понимаю, что он вызывает foo(x-1)
внутри функции foo(x=5)
, которая заставляет его проверять, есть ли еще снова и снова, до x == 0
, затем он возвращает 1. Как возвращает 1 в конечном итоге печать 8?