recursive)とは、ある関数の最後の1行(return直前)に再帰を記述するプログラミングのテクニックである。「関数の終わりの一行」ではなく「return直前の再帰処理」が末尾再帰である。ifとelseで分岐しても両方がreturnで終わるなら末尾再帰に該当する。recursive2();}賢いコンパイラだと最適化の際にこの末尾再帰を検出すると自動的に「再帰を再帰ではない形式に展開」してくれる。これを末尾再帰最適化といい、スタックを食いつぶすなどの再帰のデメリットをプログラマとコンパイラのコラボレーションで解決することができる。ソースを編集]C#での例。C#では「マイクロソフト製のコンパイラ」で、「ターゲットをx64を指定」し、かつ「Releaseビルド(最適化を有効にした状態でビルド)」を行った場合のみ末尾再帰最適化が行われる。Monoのコンパイラ(msc)でどうなるかは未調査。ソースを編集]末尾再帰の記述例は以下を参照。プライバシー・ポリシーMonoBookについて免責事項モバイルビュ。