• 技术文章 >后端开发 >Python教程

    Python阶乘求和的方法

    angryTomangryTom2020-02-14 10:08:31原创7462

    Python阶乘求和的方法

    题目描述:

    获得用户输入的整数n,输出 1!+2!+…+n!的值。

    如果输入数值为0、负数、非数字或非整数,输出提示信息:输入有误,请输入正整数。

    (推荐学习:Python视频教程

    方法一:

    #factTest1
    def main():
        a = input()
        sum = 0
        if a.isdigit():
            n = eval(a)
            if n > 0:
                fact = 1
                for i in range(1, n+1):
                    fact *= i
                    sum += fact
                print(sum)
            else:
                print("输入有误,请输入正整数")
        else:
            print("输入有误,请输入正整数")
    main()

    方法二:递归思想

    #factTest2
    import sys
    sys.setrecursionlimit(5000)
    def getSum(i):
        sum = 0
        if i==0:
            return 0
        else:
            for x in range(1,i+1):
                sum += fact(x)
            return sum
    def fact(m):
        if m==0:
            return 1
        else:
            return m*fact(m-1)
    def main():
        n = input()
        if n.isdigit():
            a = eval(n)
            if a>0:
                result = getSum(a)
                print(result)
            else:
                print("输入有误,请输入正整数")
        else:
            print("输入有误,请输入正整数")
    main()

    问题总结:

    当使用递归方法求1024的阶乘时,出现了一个异常:RecursionError: maximum recursion depth exceeded in comparison,超出了递归的最大深度。一些网友提到Python中默认的最大递归深度为1000,但在实际测试中,我的电脑到997的时候就出现异常了,不知道这是由什么决定的。因此,为了能够计算1024的阶乘,需要为最大递归深度赋予一个更大的值。这里可以采用以下方法:

    import sys
    sys.setrecursionlimit(5000) #修改为5000

    另外,也可以查看最大递归深度:

    import sys
    sys.getrecursionlimit()  # output:1000

    以上就是Python阶乘求和的方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:Python 阶乘 求和
    上一篇:python绘图四叶草 下一篇:jupyter怎么用
    大前端线上培训班

    相关文章推荐

    • python 装饰器详解• vscode怎么调试运行python程序• 如何用vscode写python程序• python绘图四叶草

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网