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二叉树遍历的实现方法
Nov 21 Python
利用python获取当前日期前后N天或N月日期的方法示例
Jul 30 Python
Python实现的排列组合计算操作示例
Oct 13 Python
django开发post接口简单案例,获取参数值的方法
Dec 11 Python
对Python的多进程锁的使用方法详解
Feb 18 Python
python面试题小结附答案实例代码
Apr 11 Python
Python箱型图处理离群点的例子
Dec 09 Python
Python 爬取必应壁纸的实例讲解
Feb 24 Python
浅析Python 条件控制语句
Jul 15 Python
Python 的 __str__ 和 __repr__ 方法对比
Sep 02 Python
Python opencv缺陷检测的实现及问题解决
Apr 24 Python
python可视化之颜色映射详解
Sep 15 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桌面中心(二) 数据库写入
2007/03/11 PHP
set_include_path在win和linux下的区别
2008/01/10 PHP
php使用sql数据库 获取字段问题介绍
2013/08/12 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
JS 控制CSS样式表
2009/08/20 Javascript
js、css、img等浏览器缓存问题的2种解决方案
2013/10/23 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
BootStrap daterangepicker 双日历控件
2017/06/02 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
JS实现的抛物线运动效果示例
2018/01/30 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
VUE简单的定时器实时刷新的实现方法
2019/01/20 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
java和js实现的洗牌小程序
2019/09/30 Javascript
jquery实现点击弹出对话框
2020/02/08 jQuery
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
js实现全选和全不选
2020/07/28 Javascript
Python Deque 模块使用详解
2014/07/04 Python
Python Socket实现简单TCP Server/client功能示例
2017/08/05 Python
python3+opencv3识别图片中的物体并截取的方法
2018/12/05 Python
django celery redis使用具体实践
2019/04/08 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
2020/03/23 Python
Python urllib.request对象案例解析
2020/05/11 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
英语专业学子个人的自我评价
2013/10/02 职场文书
中文专业学生自我评价范文
2014/02/06 职场文书
幼儿园毕业教师感言
2014/02/21 职场文书
公司营业员的自我评价
2014/03/04 职场文书
会计电算化专业求职信
2014/06/10 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
个人党性分析材料
2014/12/19 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
举起手来观后感
2015/06/09 职场文书
CSS中Single Div 绘图技巧的实现
2021/06/18 HTML / CSS