Python阶乘求和的代码详解

 更新时间:2020年02月14日 10:54:36   作者:angryTom  
在本篇文章里小编给大家整理的是关于Python阶乘求和的代码实例,有需要的朋友们可以跟着学习下。

Python阶乘求和的方法

题目描述:

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

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

方法一:

#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阶乘求和的方法的详细内容,感谢大家的学习和对脚本之家的支持。

相关文章

  • 使用pyinstaller打包.exe文件的详细教程

    使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下
    2022-04-04
  • Python进制转换与反汇编实现流程介绍

    Python进制转换与反汇编实现流程介绍

    这篇文章主要介绍了Python进制转换与反汇编的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10
  • 基于python生成词云图的代码示例

    基于python生成词云图的代码示例

    这篇文章主要个介绍了如何基于python生成词云图的代码示例,文中有详细的代码示例喝图文讲解,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-11-11
  • python读取大型csv文件的操作方法(降低内存占用)

    python读取大型csv文件的操作方法(降低内存占用)

    遇到大型的csv文件时,pandas会把该文件全部加载进内存,从而导致程序运行速度变慢,本文提供了批量读取csv文件、读取属性列的方法,减轻内存占用情况,文中有详细的代码示例,需要的朋友可以参考下
    2024-03-03
  • YOLOv5改进系列之增加小目标检测层

    YOLOv5改进系列之增加小目标检测层

    yolov5出来已经很长时间了,所以有关yolov5的一些详细介绍在这里就不一一介绍了,下面这篇文章主要给大家介绍了关于YOLOv5改进系列之增加小目标检测层的相关资料,需要的朋友可以参考下
    2022-09-09
  • pytorch制作自己的LMDB数据操作示例

    pytorch制作自己的LMDB数据操作示例

    这篇文章主要介绍了pytorch制作自己的LMDB数据操作,结合实例形式分析了pytorch使用lmdb的相关操作技巧与使用注意事项,需要的朋友可以参考下
    2019-12-12
  • Python判断以什么结尾以什么开头的实例

    Python判断以什么结尾以什么开头的实例

    今天小编就为大家分享一篇Python判断以什么结尾以什么开头的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • python实现与Oracle数据库交互操作示例

    python实现与Oracle数据库交互操作示例

    这篇文章主要为大家介绍了python实现与Oracle数据库交互操作示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家,多多进步,早日升职加薪
    2021-10-10
  • 详解Python的循环结构知识点

    详解Python的循环结构知识点

    在本篇文章里小编给大家分享了关于Python循环结构的相关知识点总结内容,需要的朋友们跟着学习下吧。
    2019-05-05
  • 解决Python字典查找报Keyerror的问题

    解决Python字典查找报Keyerror的问题

    这篇文章主要介绍了解决Python字典查找报Keyerror的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05

最新评论