Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Fakultätssummenmethode

Python-Fakultätssummenmethode

angryTom
angryTomOriginal
2020-02-14 10:08:3118575Durchsuche

Python-Fakultätssummenmethode

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn