python:RuntimeError: maximum recursion depth excee

直接给出结论:python中的递归次数是有限制的,一般情况下最大递归次数为999

如求n的阶乘

    

#此种情况。当n的取值为0-999时,运行是正常的,但是当n大于999时,就会出现
RuntimeError: maximum recursion depth exceeded 的错误提示
#-*- coding:utf-8 -*-
def Fact(n):
        if n == 0 or n == 1:
                return 1
        else:
                return n * Fact(n-1)

if __name__ == "__main__":
        n = int(raw_input("输入求阶乘的数:"))
        num = Fact(n)
        print "%d的阶乘为:%d" % (n,num)


解决方法

#-*- coding:utf-8 -*-

#导入sys模块,并调用setrecursionlimit(n)方法,其中的n为递归次数限制最大值
import sys 
sys.setrecursionlimit(1000000)

def Fact(n):
        if n == 0 or n == 1:
                return 1
        else:
                return n * Fact(n-1)

if __name__ == "__main__":
        n = int(raw_input("输入求阶乘的数:"))
        num = Fact(n)
        print "%d的阶乘为:%d" % (n,num)

  但是,还有一个情况我也没想明白,代码如下:

#-*- coding:utf-8 -*-
def Fact(n):
        return n * Fact(n-1)

if __name__ == "__main__":
        n = int(raw_input("输入求阶乘的数:"))
        num = Fact(n)
        print "%d的阶乘为:%d" % (n,num)

没有加if语句进行判断时,也会出现RuntimeError: maximum recursion depth exceeded 的错误提示


你可能感兴趣的:(python:RuntimeError: maximum recursion depth excee)