我将如何进行阶乘的详细演练?

How would I do a detailed walk-through of a factorial?

def factorial(x):

    if x == 0:
        return 1
    else:
        return x * factorial(x - 1)

print(factorial(3))

如何在每次调用时使用堆栈信息进行详细演练并在每次 return 时显示数据?

我知道我必须画 3 个框来显示每次调用时发生的情况,以及每次 return 的数据;我只是不知道该功能实际上是如何工作的,以及如何实现它。这不需要任何编码,但需要解释?

***** 更新 **** 所以像这样?

N = 3
4 * factorial (3): 24


N = 2
5 * factorial (4): 120


// and so on....

您可以尝试添加一些 print 行以了解函数调用内部发生的情况。比如下面的:

def factorial(x):
    print("factorial({}) is called".format(x))
    if x == 0:
        print("Reached base branch")
        return 1
    else:
        print("Reached recursive branch")
        result = x * factorial(x - 1)
        print("Exitted recursive branch")
        return result

print(factorial(3))

这应该让您了解对 factorial(3) 的调用最终如何调用 factorial(2)factorial(1)factorial(0),然后在基础案例时向上递归层次结构已达到。