链接到该部分我有一个问题.想想Python - 第6章第5节
这段代码让我输了.运行时,它会找到n!,但我不知道如何.我认为我误解的部分是"recurse = factorial(n-1)"行.
def factorial(n):
if n == 0:
return 1
else:
recurse = factorial(n-1)
result = n * recurse
return result
Run Code Online (Sandbox Code Playgroud)
这不是调用函数并将其发送回顶部吗?(显然不是,但我不确定为什么不).
此外,在函数完成分解因子(3!到3,2,1,1)之后,它然后将它们相乘.它在哪里记住它们?
我确信这很简单,但这让我很难过.
运行时会发生这种情况factorial(3):
factorial(3)
recurse = factorial(2)
recurse = factorial(1)
recurse = factorial(0)
return 1
return 1 * 1 = 1
return 2 * 1 = 2
return 3 * 2 = 6
Run Code Online (Sandbox Code Playgroud)
因此,在递归的每个步骤中,您都有内部步骤的返回值和当前值n.