Python阶乘求和的代码详解
Python阶乘求和的方法
题目描述:
获得用户输入的整数n,输出1!+2!+…+n!的值。
如果输入数值为0、负数、非数字或非整数,输出提示信息:输入有误,请输入正整数。
方法一:
#factTest1 defmain(): a=input() sum=0 ifa.isdigit(): n=eval(a) ifn>0: fact=1 foriinrange(1,n+1): fact*=i sum+=fact print(sum) else: print("输入有误,请输入正整数") else: print("输入有误,请输入正整数") main()
方法二:递归思想
#factTest2 importsys sys.setrecursionlimit(5000) defgetSum(i): sum=0 ifi==0: return0 else: forxinrange(1,i+1): sum+=fact(x) returnsum deffact(m): ifm==0: return1 else: returnm*fact(m-1) defmain(): n=input() ifn.isdigit(): a=eval(n) ifa>0: result=getSum(a) print(result) else: print("输入有误,请输入正整数") else: print("输入有误,请输入正整数") main()
问题总结:
当使用递归方法求1024的阶乘时,出现了一个异常:RecursionError:maximumrecursiondepthexceededincomparison,超出了递归的最大深度。一些网友提到Python中默认的最大递归深度为1000,但在实际测试中,我的电脑到997的时候就出现异常了,不知道这是由什么决定的。因此,为了能够计算1024的阶乘,需要为最大递归深度赋予一个更大的值。这里可以采用以下方法:
importsys sys.setrecursionlimit(5000)#修改为5000
另外,也可以查看最大递归深度:
importsys sys.getrecursionlimit()#output:1000
以上就是Python阶乘求和的方法的详细内容,感谢大家的学习和对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。