generated at
末尾再帰の最適化
tail call optimization
末尾再帰の最適化
故に、再帰的に呼ばれてもCall Stackは積まれない
故に、メモリ使用量が減る、Stack Over Flowを抑える
再帰なので、ただの末尾呼び出しの除去にとどまらず、loopに変換することが出来る


ただの末尾呼び出しの除去と異なり、Loopに変換することが出来る
この節を読むと、なぜloopにできるのかがなんとなくイメージできる

Babelで末尾再帰の最適化を行いWhile loopに変換している例 ref


実際のコンパイラの最適化など
Swift、つまりLLVMでの最適化の話
Swift知らなくても読めるはず
ただ単にgotoに変換できない場合の末尾再帰の最適化の例
いくつかのコーナーケースが紹介されていて良い


関連
JSのproposalの一つ
経緯など

参考
コールスタックの具体例もあってわかりやすい
説明に継続みがある