Python-Fakultätssummenmethode
Problembeschreibung:
Erhalten Sie die vom Benutzer eingegebene Ganzzahl n, geben Sie den Wert 1!+2!+…+n! aus.
Wenn der Eingabewert 0, negativ, nicht numerisch oder nicht ganzzahlig ist, wird eine Eingabeaufforderung ausgegeben: Falsche Eingabe, bitte geben Sie eine positive Ganzzahl ein.
(Empfohlenes Lernen: Python-Video-Tutorial)
Methode 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()
Methode 2: Rekursives Denken
#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()
Problemzusammenfassung:
Bei der Verwendung der rekursiven Methode zum Ermitteln der Fakultät von 1024 ist eine Ausnahme aufgetreten: RecursionError: maximale Rekursionstiefe im Vergleich überschritten, überschritten Die maximale Rekursionstiefe. Einige Internetnutzer erwähnten, dass die standardmäßige maximale Rekursionstiefe in Python 1000 beträgt, aber bei tatsächlichen Tests trat auf meinem Computer eine Ausnahme auf, als sie 997 erreichte. Ich weiß nicht, was dies bestimmt. Um die Fakultät von 1024 berechnen zu können, muss daher der maximalen Rekursionstiefe ein größerer Wert zugewiesen werden. Folgende Methoden können hier verwendet werden:
import sys sys.setrecursionlimit(5000) #修改为5000
Darüber hinaus können Sie sich auch die maximale Rekursionstiefe anzeigen lassen:
import sys sys.getrecursionlimit() # output:1000
Das obige ist der detaillierte Inhalt vonPython-Fakultätssummenmethode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!