Python阶乘求和的代码详解


Posted in Python onFebruary 14, 2020

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阶乘求和的方法的详细内容,感谢大家的学习和对三水点靠木的支持。

Python 相关文章推荐
python 实现归并排序算法
Jun 05 Python
Python脚本实现代码行数统计代码分享
Mar 10 Python
python通过pil将图片转换成黑白效果的方法
Mar 16 Python
Python编程中的文件操作攻略
Oct 16 Python
Python 删除连续出现的指定字符的实例
Jun 29 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
Jul 02 Python
Atom的python插件和常用插件说明
Jul 08 Python
Python Learning 列表的更多操作及示例代码
Aug 22 Python
Python生成随机验证码代码实例解析
Jun 09 Python
如何完美的建立一个python项目
Oct 09 Python
python某漫画app逆向
Mar 31 Python
教你用python控制安卓手机
May 13 Python
Python pip配置国内源的方法
Feb 14 #Python
Python3基本输入与输出操作实例分析
Feb 14 #Python
From CSV to SQLite3 by python 导入csv到sqlite实例
Feb 14 #Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
Feb 14 #Python
pytorch实现MNIST手写体识别
Feb 14 #Python
Python3.7实现验证码登录方式代码实例
Feb 14 #Python
Python逐行读取文件内容的方法总结
Feb 14 #Python
You might like
PHP register_shutdown_function()函数的使用示例
2015/06/23 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
php实现登陆模块功能示例
2016/10/20 PHP
phpstudy后门rce批量利用脚本的实现
2019/12/12 PHP
JavaScript关于select的相关操作说明
2010/01/13 Javascript
JavaScript运行时库属性一览表
2014/03/14 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
让angularjs支持浏览器自动填表
2014/11/10 Javascript
jQuery stop()用法实例详解
2016/07/28 Javascript
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
Python Socket传输文件示例
2017/01/16 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
Python项目跨域问题解决方案
2020/06/22 Python
怎么快速自学python
2020/06/22 Python
python能否java成为主流语言吗
2020/06/22 Python
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
美国和加拿大房车出售在线分类广告:RVT.com
2018/04/23 全球购物
印度在线杂货店:bigbasket
2018/08/23 全球购物
我想声明一个指针并为它分配一些空间, 但却不行。这些代码有什么 问题?char *p; *p = malloc(10);
2016/10/06 面试题
what is the difference between ext2 and ext3
2015/08/25 面试题
大专生工程监理求职信
2013/10/04 职场文书
通息工程毕业生自荐信
2013/10/16 职场文书
公证委托书模板
2014/04/03 职场文书
给校长的建议书500字
2014/05/15 职场文书
初中优秀教师事迹材料
2014/08/18 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
2015年手术室工作总结
2015/05/11 职场文书
沂蒙六姐妹观后感
2015/06/08 职场文书
远程教育学习心得体会
2016/01/23 职场文书
解决vue自定义组件@click点击失效问题
2022/04/30 Vue.js