差分

ナビゲーションに移動 検索に移動

末尾再帰

133 バイト追加, 2016年3月2日 (水) 04:49
編集の要約なし
末尾再帰(まつびさいき、tail '''末尾再帰'''(読み:まつびさいき、[[英語]]:tail recursive)とは、[[再帰]]のうち、[[関数]]の末尾にのみ[[再帰]]を記述する[[プログラミング]]のテクニックである。 == 概要 ==末尾再帰は再帰呼び出しが関数の末尾にのみ登場することをいう。
そんな小難しくて面倒なことをして何が嬉しいかというと、賢い[[コンパイラ]]だと[[最適化]]時に末尾再帰を検出すると自動的に[[再帰]]を[[再帰]]ではなく展開してくれる。これを[[末尾再帰最適化]]といい、[[スタック]]を食いつぶすなどの[[再帰]]のデメリットを[[プログラマ]]と[[コンパイラ]]の[[コラボレーション]]で解決してくれる。
<!--=== 例 ===[[C Sharp|C#]]での例。なお、での例。なお、[[C Sharp|C#]]では、マイクロソフト製のコンパイラで、ターゲットにx64を指定し、かつReleaseビルド(最適化を有効にした状態でビルド)を行った場合のみ末尾再帰最適化が行われる。Monoのコンパイラ(msc)でどうなるかは未調査。では「マイクロソフト製のコンパイラ」で、「ターゲットをx64を指定」し、かつ「Releaseビルド(最適化を有効にした状態でビルド)」を行った場合のみ[[末尾再帰最適化]]が行われる。[[Mono]]のコンパイラ(msc)でどうなるかは未調査。
<source lang="csharp">
class TailRecursive
}
</source>
-->
== 末尾再帰の例としてよく上がる処理 ==
== 参考文献 ==
<references/> == 外部リンク =={{reflist}}
{{stub}}
匿名利用者

案内メニュー