再帰呼び出し 【recursive call】 リカーシブコール
概要
再帰呼び出し(recursive call)とは、コンピュータプログラム中で外部から呼び出し可能な関数やプロシージャ(手続き)などが、その内部で自身を呼び出すこと。そのような処理を実装した関数を「再帰関数」(recursive function)という。関数などの内部の処理を記述したプログラムの中で、自らを呼び出すコードが含まれる構造を指す。例えば、階乗の計算 n!=n×(n-1)! やフィボナッチ数列 Fn=Fn-1+Fn-2 のように、定義や計算法にある種の再帰的な構造が含まれている場合、これをシンプルなコードに書き表すことができる。
現代的なプログラミング言語のほとんどは再帰呼び出しが可能な仕様となっているが、再帰的に自身を呼び出す関数などを記述する際には、何重に呼び出されても内部の状態が壊れないよう配慮された「リエントラント」(再入可能)な状態管理が行われている必要がある。
また、関数の中で自らを呼び出す箇所の手前に、脱出条件を満たしたら関数を終了する条件分岐などを記述しなければならない。脱出コードが無かったり条件が誤っていると、無限に自身を呼び出し続けて終了しないプログラムとなってしまう。その場合、実際に実行すると関数呼び出しに用いるメモリ上のスタック領域を使い果たして異常終了することになる。
(2024.3.12更新)