JavaScript | 再帰関数

JavaScript JavaScript
スポンサーリンク

では「再帰を使うときの思考手順(設計のコツ)」を整理してみましょう。
再帰は「魔法」ではなく、実はシンプルな設計パターンに従って書くだけなんです。


再帰設計の4ステップ

1. 問題を「同じ形に分割できるか」考える

  • 例: 配列の合計 → 「先頭の要素 + 残りの配列の合計」
  • 例: 文字列の反転 → 「残りの文字列を反転 + 先頭の文字」

👉 「小さくした問題」も元の問題と同じ形になっていることが大事。


2. 終了条件(ベースケース)を決める

  • どこで止めるかを最初に決める。
  • 例: 配列が空になったら0を返す
  • 例: nが0になったら1を返す

👉 これがないと無限ループになる。


3. 再帰ステップを書く

  • 問題を「1歩だけ小さく」して同じ関数を呼ぶ。
  • 例: factorial(n) = n * factorial(n-1)
  • 例: sumArray(arr) = arr[0] + sumArray(arr.slice(1))

4. 戻り値をどう組み立てるか考える

  • 再帰呼び出しから返ってきた値をどう使うか。
  • 例: 掛け算する、足し算する、文字をつなげる、配列を結合する。

設計のコツを例で確認

例: 文字列の反転

  1. 分割: 「先頭 + 残り」
  2. 終了条件: 空文字なら “” を返す
  3. 再帰ステップ: 残りを反転する
  4. 戻り値の組み立て: reverse(残り) + 先頭
function reverse(str) {
  if (str === "") return "";
  return reverse(str.slice(1)) + str[0];
}
JavaScript

まとめ

  • 再帰は「問題を小さく分ける」+「終了条件」+「戻りながら組み立てる」の3点セット。
  • 書くときは 終了条件を先に決める と迷いにくい。
  • ループで書けるものも多いけど、入れ子構造や分割統治では再帰が圧倒的にシンプル。

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