Rekursive Funktion zur Berechnung der Summe?
Dies ist, was ich habe, und ich bin mir nicht sicher, warum es nicht funktioniert
def sum(n):
if (n>0):
print (n)
return sum(n)+sum(n-1)
else:
print("done doodly")
number = int(input(": "))
sum(number)
Zum Beispiel, wenn der Eingänge 5, möchte ich das Programm zur Berechnung der Summe der 5+4+3+2+1. Was mache ich falsch ?
InformationsquelleAutor kiasy | 2013-11-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zwei Dinge:
sum(n)
bei der Berechnungsum
fürn
nicht tun Sie viel gutes, weil Sie recurse auf unbestimmte Zeit. Also die Zeilereturn sum(n)+sum(n-1)
ist falsch; es mussn
plus die Summe dern - 1
andere Werte. Dies macht auch Sinn, wie das ist, was Sie berechnen möchten.Als solche können Sie den code vereinfachen zu:
print sum(n)
- lassen Sie den Rückgabewert vonsum
sein, das argument zuprint
.ja, lassen Sie
sum
berechnen Sie das Ergebnis-und dann, nachdem es fertig ist, drucken Sie Sie aus.Ohhh LOL never mind, habe es.
InformationsquelleAutor Simeon Visser
Vergessen Sie
return
wennn==0
(in Ihremelse
)InformationsquelleAutor inspectorG4dget
Können Sie erschweren code:
Der Vorteil ist, dass Sie jetzt nur nutzen
log(n)
stack stattn
stackInformationsquelleAutor John La Rooy
Rekursion ist eine falsche Weg, um das berechnen der Summe der ersten n-Nummer, da Sie machen die computer zu tun
n
Berechnungen (Dies läuft in O(n) Zeit.) das ist eine Verschwendung.Könnten Sie sogar mit den eingebauten
sum()
Funktion mitrange()
, aber trotz dieser code ist auf der Suche schön und sauber, es läuft immer noch in O(n):Statt Rekursion empfehle ich, mit der Gleichung der Summe der arithmetische Reihe, da läuft Es in O(1) Zeit:
InformationsquelleAutor SzieberthAdam
Ich denke, dass Sie verwenden können, die unter mathematischen Funktion(Komplexität O(1)) statt mit Rekursion(Komplexität O(n))
InformationsquelleAutor Anjaneyulu Batta
Mit Rekursion
InformationsquelleAutor TheRimalaya