def fac(n):
if (n < 1):
return 1
else:
n * fac(n-1)
print fac(4)
为什么return命令会使函数返回并乘以阶乘?我很难理解这一点。
答案 0 :(得分:1)
1)。您需要在代码中写一个返回。
def fac(n):
if (n < 1):
return 1
else:
return n * fac(n-1)
print(fac(4))
答案 1 :(得分:0)
您需要考虑call stack
。每个fac(n)
等于n * (n-1) * (n-2) ... (n - n + 1)
的代码操作方式。
您的代码有误。为了使recursive
函数正常工作,您每次必须返回一个值。您之所以退回None
是因为您从未退货。
def fac(n):
if n == 1:
return 1
return n * fac(n - 1)
if __name__ == "__main__":
num = 2
print(fac(num))
继续练习recursion
。它非常有用且功能强大。
答案 2 :(得分:0)
相对于工作原理,更多的是为什么工作的观点:
递归调用函数与调用其他函数没什么不同:它恰好执行同一组指令。您不必担心Python会在局部变量和不同函数的参数之间造成混淆,也不必担心返回到何处。这没什么不同。实际上,如果每个递归调用都有自己的名称而不是重复使用相同的名称,那么您可能就不会在这里了。
显示其正确运行 有点不同,因为您需要确保递归在某个时刻结束。但这与担心无限循环无异。