IT-Lexikon › Programmierung › Tail Call Optimization

Tail Call Optimization

Programmierung Svenska → Aktualisiert: 2026-09-14

Wenn ein Funktionsaufruf das Letzte ist, was passiert, kann der Compiler den bestehenden Stack-Frame wiederverwenden, statt einen neuen anzulegen. Rekursion wird dadurch zur Schleife.

Die Bedingung ist, dass der Aufruf in Tail-Position steht, also nach seiner Rückkehr keine Arbeit mehr übrig bleibt — return f(x) erfüllt das, return f(x) + 1 nicht, weil die Addition danach noch ausgeführt werden muss. Ist die Bedingung erfüllt, gibt es keinen Grund, die Rückgabeadresse zu sichern, und eine Rekursion beliebiger Tiefe läuft in konstantem Stack-Speicher. In Scheme ist das im Standard vorgeschrieben und die Grundlage dafür, dass sich im Sprachdesign jede Iteration als Rekursion ausdrücken lässt. In C, C++ und Rust machen es die Compiler bei eingeschalteter Optimierung, aber ohne Garantie — derselbe Code kann im Debug-Build also den Stack sprengen. JavaScript hat es in ES6 spezifiziert, aber nur Safari hat es je implementiert.

← Zurück zum Lexikon