JavaScript | 再帰関数

JavaScript JavaScript
スポンサーリンク

主な内容の要点

再帰関数とは「関数の中で自分自身を呼び出す関数」のことです。無限ループにならないように「終了条件」を必ず書くのが大事です。代表的な使い方は「階乗の計算」など、同じ処理を繰り返しながら少しずつ問題を小さくしていく場面です。


再帰関数の基本

  • 定義:関数の中で自分自身を呼び出す関数。
function test() {
  test(); // 自分を呼び出す
}
JavaScript

→ このままだと無限ループになるので注意。

  • 終了条件が必須
    再帰を止める条件を書かないと処理が終わらない。
function test(n) {
  if (n > 0) {
    test(n - 1); // nを減らしながら再帰
  }
}
JavaScript

処理の流れイメージ

  • 再帰関数は「呼び出し → 条件チェック → 次の呼び出し → 戻り値を返す」という流れ。
  • 例えば test(2) を呼ぶと:
    1. Hello を表示
    2. test(1) を呼ぶ
    3. さらに test(0) を呼ぶ
    4. 0になったら終了し、順番に戻りながら Bye を表示

具体例:階乗の計算

  • 階乗(factorial):5! = 5 × 4 × 3 × 2 × 1 = 120
  • 再帰関数で書くとシンプルになる:
function factorial(n) {
  if (n === 0) return 1;   // 終了条件
  return n * factorial(n - 1);
}
console.log(factorial(5)); // 120
JavaScript

ポイント整理

  • 再帰関数 = 自分を呼ぶ関数
  • 終了条件がないと無限ループになる
  • 処理を小さく分けて繰り返すのに便利
  • 階乗や探索アルゴリズムなどでよく使われる

初心者向けまとめ

  • 「自分を呼ぶ関数=再帰関数」。
  • 必ず「いつかは呼ばなくなる条件(終了条件)」を入れること。
  • 引数を少しずつ変えて、終了条件に近づけること。
  • 呼び出しの流れを把握しにくいので、処理の流れを追いながら書くと理解が深まります。
  • 再帰関数を使うと記述が簡潔になる場合もあるが、常に使えば良いわけではない。
  • まずは小さな例(階乗など)で練習してから、少し応用的な使い方(ツリー構造など)にチャレンジすると良いです。

初心者のうちは「ループ処理の代わりに使える書き方」と考えると分かりやすいです。慣れてきたら、木構造の探索やアルゴリズム実装などでも役立ちます。

タイトルとURLをコピーしました