直接给出结论: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 的错误提示