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解析xml文件操作实例
Oct 05 Python
Python的另外几种语言实现
Jan 29 Python
python中的闭包函数
Feb 09 Python
总结python中pass的作用
Feb 27 Python
OpenCV 边缘检测
Jul 10 Python
Python中的类与类型示例详解
Jul 10 Python
django自带serializers序列化返回指定字段的方法
Aug 21 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
Apr 09 Python
jupyter notebook运行命令显示[*](解决办法)
May 18 Python
公认8个效率最高的爬虫框架
Jul 28 Python
Python3使用tesserocr识别字母数字验证码的实现
Jan 29 Python
Python基础之数据类型知识汇总
May 18 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生成百度sitemap站点地图类函数实例
2014/10/17 PHP
thinkphp判断访客为手机端或PC端的方法
2014/11/24 PHP
javascript优先加载笔记代码
2008/09/30 Javascript
jquery 图片轮换效果
2010/07/29 Javascript
jQuery中odd选择器的定义和用法
2014/12/23 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
Bootstrap使用基础教程详解
2016/09/05 Javascript
ES6概念 ymbol.for()方法
2016/12/25 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
2017/01/23 Javascript
vue自定义全局组件(自定义插件)的用法
2018/01/30 Javascript
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
ES6中异步对象Promise用法详解
2019/07/31 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
linux 下以二进制的方式安装 nodejs
2020/02/12 NodeJs
vue 使用 sortable 实现 el-table 拖拽排序功能
2020/12/26 Vue.js
[01:19:34]2014 DOTA2国际邀请赛中国区预选赛 New Element VS Dream time
2014/05/22 DOTA
在Python中处理日期和时间的基本知识点整理汇总
2015/05/22 Python
Python中使用platform模块获取系统信息的用法教程
2016/07/08 Python
Python内存管理实例分析
2019/07/10 Python
对Python3中列表乘以某一个数的示例详解
2019/07/20 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
python线程信号量semaphore使用解析
2019/11/30 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
如何利用python发送邮件
2020/09/26 Python
企业车辆管理制度
2014/01/24 职场文书
中级会计职业生涯规划书
2014/03/01 职场文书
公证委托书
2014/08/01 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
小学感恩节活动总结
2015/03/24 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
2016特色励志班级口号
2015/12/24 职场文书
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL