递归函数无法执行成功的思考

爬网站时遇到一个问题,写递归函数时,总是出现不执行的问题,如下测试示例:

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).

至此,我对于递归函数有了更深刻的理解。

 

posted on 2018-03-26 16:40  读书的鸟  阅读(191)  评论(0)    收藏  举报

导航