Optimiert Python die Schwanzrekursion?
Python optimiert die Schwanzrekursion nicht, wie von seinem Schöpfer Guido van Rossum ausdrücklich angegeben. Rossum priorisiert ordnungsgemäße Tracebacks gegenüber der potenziellen Optimierung der Tail-Rekursion.
Warum Python die Tail-Rekursion nicht optimiert
Rossum ist der Ansicht, dass die Aufrechterhaltung der Fähigkeit, genaue Tracebacks zu generieren, wichtiger ist als die Optimierung der Schwanzrekursion. Tracebacks sind für das Debuggen und das Verständnis der Codeausführung unerlässlich.
Manuelle Eliminierung der Tail-Rekursion
Trotz der fehlenden Tail-Rekursionsoptimierung in Python können Sie die Rekursion mithilfe einer Transformation manuell eliminieren . Konvertieren Sie die rekursive Funktion in eine While-Schleife und aktualisieren Sie die Parameter innerhalb der Schleife, anstatt die Tail-Rekursion zu verwenden.
Beispiel: Eliminierung der Tail-Rekursion
def trisum(n, csum): while True: # Change recursion to a while loop if n == 0: return csum n, csum = n - 1, csum + n # Update parameters instead of tail recursion
Das obige ist der detaillierte Inhalt vonOptimiert Python die Tail-Rekursion und wenn nicht, warum?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!