Python 階乗和メソッド
タイトルの説明:
ユーザーが入力した整数を取得するn、1! 2! … n! の値を出力します。
入力値が 0、負、非数値、または非整数の場合、「入力が正しくありません。正の整数を入力してください」というプロンプト メッセージが出力されます。
(推奨学習: Python ビデオ チュートリアル )
方法 1:
#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()
方法 2: 再帰的思考
#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: 最大再帰深度を超えました比較、再帰の最大深さを超えました。一部のネチズンは、Python のデフォルトの最大再帰深度は 1000 であると述べましたが、実際のテストでは、私のコンピューターでは 997 に達したときに例外が発生しました。何がこれを決定するのかはわかりません。したがって、1024 の階乗を計算できるようにするには、最大再帰深さにより大きな値を与える必要があります。ここでは次のメソッドを使用できます:
import sys sys.setrecursionlimit(5000) #修改为5000
さらに、再帰の最大深さを表示することもできます:
import sys sys.getrecursionlimit() # output:1000
以上がPythonの階乗和法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。