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 的错误提示


转载于:https://my.oschina.net/yanxiaoshuai/blog/471508

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值