Zurück zur Übersicht

Begriff

Tail Recursion (Endrekursion)

Computer Science Programming S3
2 Quellen 0 Lernpfade 0 Backlinks enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

Es gibt eine "gute" und eine "schlechte" Art der Rekursion.

  • Schlecht (Normal): "Ich rufe mich selbst auf, und danach rechne ich noch was mit dem Ergebnis (+1)." Der Computer muss sich merken: "Warte hier, ich muss später noch +1 rechnen." (Kostet Platz auf dem Stack).
  • Gut (Tail Recursive): "Ich rufe mich selbst auf, und das ist das allerletzte, was ich tue." Der Computer denkt: "Cool, ich muss mir nichts merken. Ich kann den alten Zettel wegwerfen und den neuen an die gleiche Stelle legen." Das spart Speicher. Aus einer Rekursion wird intern eine simple Schleife.

Merksatz: Eine spezielle Form der Rekursion, bei der der rekursive Aufruf die letzte Anweisung der Funktion ist, was Speicheroptimierung (TCO) ermöglicht.


Quick-Check

  1. Warum "Tail" (Schwanz)?
    Weil der Aufruf ganz am Ende (am Schwanz) der Funktion steht. Es darf kein Code mehr nach dem Aufruf kommen.
  2. Ist jede Rekursion optimierbar?
    Nein. Code wie fib(n-1) + fib(n-2) ist nicht tail-recursive, weil man zwei Aufrufe hat und deren Ergebnisse addieren muss. Das Addieren passiert danach.
  3. Ist es schneller?
    Ja, und speicherschonender (O(1) Stack Space statt O(n)). Es verhindert Abstürze bei tiefen Rekursionen.