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使用百度翻译进行中翻英示例
Apr 14 Python
Python数组条件过滤filter函数使用示例
Jul 22 Python
在Python中marshal对象序列化的相关知识
Jul 01 Python
Python多进程并发与多线程并发编程实例总结
Feb 08 Python
pygame游戏之旅 添加碰撞效果的方法
Nov 20 Python
pandas DataFrame索引行列的实现
Jun 04 Python
pandas取出重复数据的方法
Jul 04 Python
Django后台admin的使用详解
Jul 08 Python
pytorch构建多模型实例
Jan 15 Python
Django数据结果集序列化并展示实现过程
Apr 22 Python
python PIL模块的基本使用
Sep 29 Python
next在python中返回迭代器的实例方法
Dec 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
yii框架源码分析之创建controller代码
2011/06/28 PHP
PHP中变量引用与变量销毁机制分析
2014/11/15 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
php自定义函数实现统计中文字符串长度的方法小结
2017/04/15 PHP
php实现每日签到功能
2018/11/29 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
2019/09/11 PHP
动态加载iframe
2006/06/16 Javascript
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
gridview生成时如何去掉style属性中的border-collapse
2014/09/30 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
微信小程序 Video API实例详解
2016/10/02 Javascript
ReactNative-JS 调用原生方法实例代码
2016/10/08 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
JavaScript HTML DOM元素 节点操作汇总
2019/07/29 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
2020/08/28 Javascript
python字典的常用操作方法小结
2016/05/16 Python
CentOS6.5设置Django开发环境
2016/10/13 Python
Django admin实现图书管理系统菜鸟级教程完整实例
2017/12/12 Python
tensorflow实现简单的卷积网络
2018/05/24 Python
python使用MQTT给硬件传输图片的实现方法
2019/05/05 Python
三步实现Django Paginator分页的方法
2019/06/11 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
2020/03/06 Python
基于python实现matlab filter函数过程详解
2020/06/08 Python
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
中学生打架检讨书
2014/02/10 职场文书
法人代表授权委托书
2014/04/08 职场文书
档案接收函格式
2015/01/30 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
MySQL中B树索引和B+树索引的区别详解
2022/03/03 MySQL
微信小程序纯CSS实现无限弹幕滚动效果
2022/09/23 HTML / CSS