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中文竖排显示的方法
Jul 28 Python
Python闭包的两个注意事项(推荐)
Mar 20 Python
python实现xlsx文件分析详解
Jan 02 Python
Python中XlsxWriter模块简介与用法分析
Apr 24 Python
python使用response.read()接收json数据的实例
Dec 19 Python
python使用协程实现并发操作的方法详解
Dec 27 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
Jan 10 Python
Matplotlib自定义坐标轴刻度的实现示例
Jun 18 Python
浅析python中的del用法
Sep 02 Python
正确的理解和使用Django信号(Signals)
Apr 14 Python
详细介绍python操作RabbitMq
Apr 12 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
Jun 21 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在XP下IIS和Apache2服务器上的安装
2006/09/05 PHP
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
fleaphp下不确定的多条件查询的巧妙解决方法
2008/09/11 PHP
php二维码生成
2015/10/19 PHP
php 中奖概率算法实现代码
2017/01/25 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
Smarty模板语法详解
2019/07/20 PHP
JavaScript confirm选择判断
2008/10/18 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
JavaScript实现对下拉列表值进行排序的方法
2015/07/15 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
详解小程序缓存插件(mrc)
2018/08/17 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
js实现倒计时器自定义时间和暂停
2019/02/25 Javascript
jQuery中each和js中forEach的区别分析
2019/02/27 jQuery
浅谈JavaScript闭包
2019/04/09 Javascript
vue 实现路由跳转时更改页面title
2019/11/05 Javascript
用Node写一条配置环境的指令
2019/11/14 Javascript
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
python利用装饰器进行运算的实例分析
2015/08/04 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
使用APScheduler3.0.1 实现定时任务的方法
2019/07/22 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
pytorch逐元素比较tensor大小实例
2020/01/03 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
Canvas与图片压缩的示例代码
2017/11/28 HTML / CSS
Vans澳大利亚官网:购买鞋子、服装及配件
2019/09/05 全球购物
网络工程师职业规划
2014/02/10 职场文书
教师党员承诺书
2014/03/25 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
2014年班组工作总结
2014/11/20 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle
【海涛教你打DOTA】死灵飞龙第一视角解说
2022/04/01 DOTA
app场景下uniapp的扫码记录
2022/07/23 Java/Android