削除された内容 追加された内容
9行目:
手続きや関数といった概念をもつ[[プログラミング言語]]では、ある手続き中で再びその手続き自身を呼び出すことを認める場合が多い。これを'''再帰呼出し'''といい、[[階乗]]計算や[[フィボナッチ数列]]のように、本来再帰的な構造をもつ[[アルゴリズム]](再帰的アルゴリズム)を記述するのに適している。<!-- 再帰のことを[[帰納]]という場合もある。← 上と重複している。-->
 
再帰呼出しが許されない言語もある(戻りアドレスを固定の場所に記録しているなど。かなり昔{{When|date=2017年7月}}の[[FORTRAN]]などではそういう実装もあった)。また、引数やローカル変数が無いため効果的に再帰呼出しを利用できない言語(クラシックな[[BASIC]]等)では、配列を利用してスタックを実装し、それを使って再帰的な処理を実現する。
 
複数の手続き/関数が互いに相手を呼ぶ場合も、広い意味での再帰呼出し([[相互再帰]])である。[[Pascal]] での例: