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....
答案 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)
,然后在达到基本情况时上升到递归层次结构