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脚本
Sep 01 Python
以一段代码为实例快速入门Python2.7
Mar 31 Python
在Python的web框架中中编写日志列表的教程
Apr 30 Python
用Python编写简单的定时器的方法
May 02 Python
Python中使用插入排序算法的简单分析与代码示例
May 04 Python
Python enumerate索引迭代代码解析
Jan 19 Python
基于python二叉树的构造和打印例子
Aug 09 Python
python selenium登录豆瓣网过程解析
Aug 10 Python
python2 对excel表格操作完整示例
Feb 23 Python
python selenium自动化测试框架搭建的方法步骤
Jun 14 Python
Python实现多线程下载脚本的示例代码
Apr 03 Python
彻底解决pip下载pytorch慢的问题方法
Mar 01 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 flush类输出缓冲剖析
2008/10/19 PHP
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
2014/04/29 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
JS实现移动端按首字母检索城市列表附源码下载
2017/07/05 Javascript
对于Javascript 执行上下文的全面了解
2017/09/05 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
微信小程序 swiper 组件遇到的问题及解决方法
2019/05/26 Javascript
JavaScript 处理树数据结构的方法示例
2019/06/16 Javascript
layUI实现前端分页和后端分页
2019/07/27 Javascript
小程序Request的另类用法详解
2019/08/09 Javascript
[00:12]2018DOTA2亚洲邀请赛 Sccc亮相SOLO赛,今年他又会有什么样的战绩?
2018/04/06 DOTA
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
pymongo实现多结果进行多列排序的方法
2015/05/16 Python
简单谈谈Python流程控制语句
2016/12/04 Python
Python编写Windows Service服务程序
2018/01/04 Python
用Python进行简单图像识别(验证码)
2018/01/19 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
英国著名的小众美容品牌网站:Alyaka
2017/08/08 全球购物
Booking.com亚太地区:Booking.com APAC
2020/02/07 全球购物
中学生个人自我评价
2014/02/06 职场文书
2014全国两会学习心得体会2000字
2014/03/10 职场文书
商务日语专业自荐信
2014/04/17 职场文书
工作保证书范文
2014/04/29 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
2014年医院工作总结
2014/11/20 职场文书
2019年中学生的思想品德评语集锦
2019/12/19 职场文书