Python階乘求和的代碼詳解
Python階乘求和的方法
題目描述:
獲得用戶輸入的整數(shù)n,輸出 1!+2!+…+n!的值。
如果輸入數(shù)值為0、負數(shù)、非數(shù)字或非整數(shù),輸出提示信息:輸入有誤,請輸入正整數(shù)。
方法一:
#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("輸入有誤,請輸入正整數(shù)") else: print("輸入有誤,請輸入正整數(shù)") 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("輸入有誤,請輸入正整數(shù)") else: print("輸入有誤,請輸入正整數(shù)") main()
問題總結:
當使用遞歸方法求1024的階乘時,出現(xiàn)了一個異常:RecursionError: maximum recursion depth exceeded in comparison,超出了遞歸的最大深度。一些網友提到Python中默認的最大遞歸深度為1000,但在實際測試中,我的電腦到997的時候就出現(xiàn)異常了,不知道這是由什么決定的。因此,為了能夠計算1024的階乘,需要為最大遞歸深度賦予一個更大的值。這里可以采用以下方法:
import sys sys.setrecursionlimit(5000) #修改為5000
另外,也可以查看最大遞歸深度:
import sys sys.getrecursionlimit() # output:1000
以上就是Python階乘求和的方法的詳細內容,感謝大家的學習和對腳本之家的支持。
相關文章
Python趣味挑戰(zhàn)之教你用pygame畫進度條
pygame四種方法教會你畫進度條,其實也不難,文中有非常詳細的代碼示例,對正在學習python的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05python裝飾器-限制函數(shù)調用次數(shù)的方法(10s調用一次)
下面小編就為大家分享一篇python裝飾器-限制函數(shù)調用次數(shù)的方法(10s調用一次),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04