Tail-Rekursionsoptimierung in Python
Python optimiert die Tail-Rekursion nicht, wie durch Guido van Rossums ausdrückliche Entscheidung bestätigt, sie aufgrund von nicht zu implementieren die Wahrung ordnungsgemäßer Rückverfolgungen.
Frage:Ist Ist Python zur Schwanzrekursionsoptimierung fähig?
Antwort:Nein.
Diskussion:
Um das Problem zu veranschaulichen, betrachten Sie Folgendes: Folgender Python-Code, der die Summe einer Dreiecksreihe berechnet:
1 2 3 4 5 |
|
Bei Ausführung mit einem großen Wert für n, dieser Code schlägt aufgrund einer übermäßigen Rekursionstiefe fehl. Die Tail-Rekursionsoptimierung könnte dieses Problem lindern, indem der rekursive Aufruf durch einen Sprung zum Anfang der Funktion mit aktualisierten Parametern ersetzt wird.
Python implementiert jedoch keine Tail-Rekursionsoptimierung, da Guido van Rossum die Aufrechterhaltung ordnungsgemäßer Tracebacks priorisiert hat.
Optimierungs-Workaround:
Wenn eine Schwanzrekursionsoptimierung gewünscht ist, Python-Code kann manuell transformiert werden, um Rekursionen zu vermeiden. Hier ist eine modifizierte Version der Trisum-Funktion:
1 2 3 4 5 |
|
Das obige ist der detaillierte Inhalt vonFührt Python eine Schwanzrekursionsoptimierung durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!