読み方:さいきかんすう
再帰関数 【recursive function】
概要
再帰関数(recursive function)とは、関数の定義の中に、その関数の呼び出しが含まれるもの。そのような自身が自身を呼び出すような関数呼び出しを「再帰呼び出し」という。多くのプログラミング言語には、まとまったコードのかたまりに名前を付け、外部からパラメータ(引数)を渡して繰り返し呼び出すことができる「関数」(function)の仕組みがあるが、その処理を記述したコードの中で、自らを呼び出すコードが含まれるようなものを再帰関数という。
例えば、階乗の計算 n!=n×(n-1)! やフィボナッチ数列 Fn+2=Fn+1+Fn のように、定義や算法にある種の再帰的な構造が含まれている場合、これをシンプルなコードに書き表すことができる。関数型言語では繰り返し処理を原則として再帰関数として表す。
現代的なプログラミング言語のほとんどは再帰関数の定義・実行が可能な仕様となっているが、再帰関数を記述する際には、関数が終了しないまま何度も新たに呼び出されても、内部の状態が壊れないよう配慮された「リエントラント」(再入可能)な構造になっている必要がある。
また、関数の中で自らを呼び出す箇所の手前に、脱出条件を満たしたら新たに再帰呼び出しせずに関数を終了する条件分岐を記述しなければならない。脱出コードが無かったり条件が誤っていると、無限に自身を呼び出し続けて終了しない(実際にはスタックを使い果たして異常終了する)プログラムとなってしまう。
(2023.10.22更新)
プログラミングの用語一覧
その他の関連用語
試験出題履歴
基本情報技術者試験 : 【令5修1 問8】 【令4修12 問10】 【令4修7 問10】 【令4修6 問7】 【令4修1 問9】 【令3修7 問10】 【令3修6 問9】 【令2修12 問9】 【令2修7 問7】 【令1秋 問11】 【令1修7 問8】 【令1修6 問7】 【平31修1 問6】 【平30修12 問5】 【平30修7 問7】 【平30修6 問5】 【平30修1 問7】 【平29修12 問8】 【平29修6 問7】 【平29春 問6】 【平28修12 問5】 【平28秋 問7】 【平28春 問7】 【平27秋 問8】 【平26修12 問7】 【平26秋 問7】 【平26修7 問8】 【平26春 問6】 【平25修12 問7】 【平24秋 問7】 【平23修12 問7】 【平23春 問6】 【平21修12 問8】 【平21春 問8】