「末尾再帰」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
− | + | 末尾再帰(まつびさいき、tail recursive)とは、[[再帰]]のうち、[[関数]]の末尾にのみ[[再帰]]を記述する[[プログラミング]]のテクニックである。 | |
− | + | そんな小難しくて面倒なことをして何が嬉しいかというと、賢い[[コンパイラ]]だと[[最適化]]時に末尾再帰を検出すると自動的に[[再帰]]ではなくしてくれる。これを[[末尾再帰最適化]]という。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | <!-- | |
− | [[C Sharp|C#]] | + | [[C Sharp|C#]]での例。 |
+ | なお、[[C Sharp|C#]]では、マイクロソフト製のコンパイラで、ターゲットにx64を指定し、かつReleaseビルド(最適化を有効にした状態でビルド)を行った場合のみ末尾再帰最適化が行われる。Monoのコンパイラ(msc)でどうなるかは未調査。 | ||
<source lang="csharp"> | <source lang="csharp"> | ||
class TailRecursive | class TailRecursive | ||
34行目: | 25行目: | ||
} | } | ||
</source> | </source> | ||
+ | --> | ||
== 末尾再帰の例としてよく上がる処理 == | == 末尾再帰の例としてよく上がる処理 == | ||
44行目: | 36行目: | ||
* [[真正末尾再帰]] | * [[真正末尾再帰]] | ||
* [[再帰]] | * [[再帰]] | ||
+ | |||
+ | == 参考文献 == | ||
+ | <references/> | ||
+ | |||
+ | == 外部リンク == | ||
+ | |||
+ | {{stub}} |