好的,所以这段代码来自我学校的练习题.我们要在心理上解析代码并检查答案.
当我第一次解析它时,我得到了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))
Run Code Online (Sandbox Code Playgroud)
据我所知,它正在调用foo(x-1)函数内部,foo(x=5)这使得它一次又一次地检查是否会再次x == 0返回1.返回1如何最终打印8?