我将如何进行阶乘的详细演练?
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)
,然后在基础案例时向上递归层次结构已达到。
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)
,然后在基础案例时向上递归层次结构已达到。