再帰関数 【recursive function】

概要

再帰関数(recursive function)とは、関数の定義の中に、その関数の呼び出しが含まれるもの。そのような自身が自身を呼び出すような関数呼び出しを「再帰呼び出し」という。

多くのプログラミング言語には、まとまったコードのかたまりに名前を付け、外部からパラメータ引数)を渡して繰り返し呼び出すことができる「関数」(function)の仕組みがあるが、その処理を記述したコードの中で、自らを呼び出すコードが含まれるようなものを再帰関数という。

例えば、階乗の計算 n!=n×(n-1)! やフィボナッチ数列 Fn+2=Fn+1+Fn のように、定義や算法にある種の再帰的な構造が含まれている場合、これをシンプルなコードに書き表すことができる。関数型言語では繰り返し処理を原則として再帰関数として表す。

現代的なプログラミング言語のほとんどは再帰関数の定義・実行が可能な仕様となっているが、再帰関数を記述する際には、関数が終了しないまま何度も新たに呼び出されても、内部の状態が壊れないよう配慮された「リエントラント」(再入可能)な構造になっている必要がある。

また、関数の中で自らを呼び出す箇所の手前に、脱出条件を満たしたら新たに再帰呼び出しせずに関数を終了する条件分岐を記述しなければならない。脱出コードが無かったり条件が誤っていると、無限に自身を呼び出し続けて終了しない(実際にはスタックを使い果たして異常終了する)プログラムとなってしまう。

(2023.10.22更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる