想想python - 第6.5节

0 python recursion function

链接到该部分我有一个问题.想想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)
  1. 这不是调用函数并将其发送回顶部吗?(显然不是,但我不确定为什么不).

  2. 此外,在函数完成分解因子(3!到3,2,1,1)之后,它然后将它们相乘.它在哪里记住它们?

我确信这很简单,但这让我很难过.

Thi*_*ter 6

运行时会发生这种情况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.