Jam*_*ght 4 python recursion stack
我意识到这可能听起来像一个愚蠢的问题,但我最后一次编程它是在汇编程序,所以我的想法可能是关闭的:
递归函数如下:
def fac(n):
if n == 0:
return 1
else:
return n * fac(n - 1)
Run Code Online (Sandbox Code Playgroud)
为什么当函数达到n == 0时它不返回1而是返回因子.我在思考类似于汇编程序的东西,当n == 0时:
mov eax, 1
ret
Run Code Online (Sandbox Code Playgroud)
为什么上面的代码工作,我想python在那个条件之前返回堆栈的最后一个值?
Ara*_*raK 12
想想这样,fac(5)例如:
return 5 * fac(4)
return 4 * fac(3)
return 3 * fac(2)
return 2 * fac(1)
return 1 * fac(0)
1
Run Code Online (Sandbox Code Playgroud)
因此1将成为第一个返回值,但将返回到fac(1)和fac(1)将返回fac(2)等.
| 归档时间: |
|
| 查看次数: |
2129 次 |
| 最近记录: |