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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
