Ich lerne gerade das Tutorial auf der seite http://www.python-kurs.eu/ . Und ich komme bei der Rekursive Funktion etwas durcheinander.
Und zwar irritiert mich die Ausgabe der Funktion.
Folgender Code....
Code: Alles auswählen
def factorial(n):
print("factorial has been called with n = " + str(n))
if n == 1:
return 1
else:
res = n * factorial(n-1)
print("intermediate result for ", n, " * factorial(" ,n-1, "): ",res)
return res
print(factorial(5))
Code: Alles auswählen
factorial has been called with n = 5
factorial has been called with n = 4
factorial has been called with n = 3
factorial has been called with n = 2
factorial has been called with n = 1
intermediate result for 2 * factorial( 1 ): 2
intermediate result for 3 * factorial( 2 ): 6
intermediate result for 4 * factorial( 3 ): 24
intermediate result for 5 * factorial( 4 ): 120
120
Das heisst:
1. print("factorial has been called with n = " + str(n)) wird ausgewärtet und ausgegeben.
2. Da Parameter Wert nicht gleich 1 ist, wird else aufgerufen: Und die Variable res = n * factorial(n-1) ausgewärtet.
3. print("intermediate result for ", n, " * factorial(" ,n-1, "): ",res) wird ausgewärtet und ausgegeben.
4. Schliesslich wird durch return res die gesammte Funktion mit (n-1) widerhollt.
Dem ist aber nicht so, und ich verstehe nicht warum. Wo habe ich etwas falsch verstanden??
Vielen dank schon mal