我如何详细介绍阶乘?

时间:2016-10-07 20:00:14

标签: python recursion stack factorial

def factorial(x):

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

print(factorial(3))

如何在每次通话时详细了解堆栈信息并在每次回复时显示数据?

我知道我必须绘制3个方框来显示每次通话时会发生什么,以及每次返回时的数据;我只是不知道函数是如何工作的,以及如何实现它。这不需要任何编码,但需要解释?

*****更新**** 这样的事情呢?

N = 3
4 * factorial (3): 24


N = 2
5 * factorial (4): 120


// and so on....

1 个答案:

答案 0 :(得分:0)

您可以尝试添加一些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),然后在达到基本情况时上升到递归层次结构