递归函数无法执行成功的思考
爬网站时遇到一个问题,写递归函数时,总是出现不执行的问题,如下测试示例:
def fact(n):
return n
return n*fact(n-1)
print fact(10)
如上面所示我想要达到的效果是打印出的结果为90,但是实际的执行结果是:

也就是只执行到return n那里,后面的n*fact(n-1)并没有执行,后来我将代码改成了这样:
def fact(n):
if n==1:
return n
return n*fact(n-1)
print fact(10)
执行结果是这样的:

其执行结果是正确的,也就是计算的是10*9*8*7*6*5*4*3*2*1此时去网上百度了一下递归函数的一些知识,原来递归函数必须有最后的默认结果,也就是上面限制的
if n==1:
return n
且递归的结果必须向默认结果收敛,也就是fact(n-1).
至此,我对于递归函数有了更深刻的理解。
浙公网安备 33010602011771号