我意识到这听起来像是一个愚蠢的问题,但我上次编程时是用汇编程序编写的,所以我的想法可能不对:
这样的递归函数:
def fac(n):
if n == 0:
return 1
else:
return n * fac(n - 1)
为什么当函数达到 n == 0 时它不返回 1 而是返回阶乘的答案。我在想类似在汇编程序中 n == 0 时的情况:
mov eax, 1
ret
为什么上面的代码可以工作,我想 python 会返回该条件之前堆栈中的最后一个值?
最佳答案
这样想,以fac(5)
为例:
return 5 * fac(4)
return 4 * fac(3)
return 3 * fac(2)
return 2 * fac(1)
return 1 * fac(0)
1
因此 1
将是第一个 返回值,但它将返回到 fac(1)
和 fac(1)
将返回到 fac(2)
等等。
关于python - 递归——Python,返回值问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1601757/