Skip to content
Latchkey

末尾呼び出し最適化とは何か?

末尾呼び出し最適化は、末尾位置の呼び出しを、新しいフレームを割り当てる代わりに既存のスタックフレームを再利用するジャンプへ置き換える、コンパイラまたはランタイムの技術です。その結果、末尾呼び出しで表現された再帰は、ループとよく似て一定のスタック空間で実行されます。すべての言語やモードがこれを保証するわけではないため、利用できるかどうかは異なります。

なぜ重要か

末尾呼び出し最適化があれば、そうでなければスタックをあふれさせる再帰的なコードが、安全かつメモリ効率的になります。それが無いことが、ある言語が深い再帰を許すのに対し、別の言語がループを要求する理由です。

関連ガイド