뚠뚠멍의 생각들

テールコール最適化 (Tail Call Optimization)

作成: 2024-10-12

作成: 2024-10-12 18:47

コーディングテストの勉強中、そしてテキストにアニメーション効果を挿入する際に

再帰関数を書いていたところ、AIの助けでTCOという概念を知りました。


テールコール最適化(TCO)は、再帰呼び出しによって発生するスタックオーバーフローを防ぎ、メモリ使用を効率的にします。


JavaScriptでは、es6 strictモードでサポートされるように仕様されていますが、まだ多くのブラウザでサポートされているわけではないようです。


一般再帰


テールコール再帰


関数の最後の演算を再帰関数呼び出しで終える方法をテールコール再帰と言います。

関数スタックフレームが不要になるため、メモリ使用量が最適化されます!


JavaScriptでテールコール再帰を実装する方法は、トランポリン技法を使用することです。

この方法では、factorialTCO関数は直接結果を返す代わりに関数を返します。

trampoline関数は、この返された関数を繰り返し実行して最終的な結果を取得します。


関数型プログラミングにおける主要な手法と言われています。従来の再帰関数の欠点(スタックオーバーフロー)を解決するという点で興味深いものです。実際、コードだけを見ても直感的に理解できないため、迷った時はもう一度調べてみる必要があるでしょう。


コメント0