Kann mir jemand Schritt für Schritt erklären, wie diese faktorielle Funktion solche Ausgaben ausgibt? Ich verstehe nicht, warum es alle faktoriellen drucken, dann folgen Zwischenanweisung, da zuerst n = 5 nicht übereinstimmt n == 1, so dass es zu else Anweisung gehen und intermediate ausdrucken wird.Python-Faktorielle Rekursionsfunktion
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))
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
Folgen Sie einfach die Funktion mit einem Debugger, Sie werden es verstehen. Der erste Aufruf wird nicht beendet, solange Funktionen aufgerufen werden. Der Anrufdruck erfolgt vor dem Zwischenergebnis. –
Dies ist das Grundprinzip der Rekursion. Die erste vollständig auszuführende Funktion ist die zuletzt aufgerufene. – iFlo
@ Jean. Welchen Debugger kann ich verwenden? Ich benutze nur cmd. – user1902849