では「再帰の動きを図解で追う」ステップに進みましょう。
例として factorial(3) を使います。
コード
function factorial(n) {
if (n === 0) return 1; // 終了条件
return n * factorial(n - 1); // 再帰ステップ
}
console.log(factorial(3));
JavaScript実行の流れをステップごとに追う
- 最初の呼び出し
factorial(3)- 終了条件ではないので →
3 * factorial(2)を計算するためにfactorial(2)を呼ぶ。
- 2回目の呼び出し
factorial(2)- 終了条件ではないので →
2 * factorial(1)を計算するためにfactorial(1)を呼ぶ。
- 3回目の呼び出し
factorial(1)- 終了条件ではないので →
1 * factorial(0)を計算するためにfactorial(0)を呼ぶ。
- 4回目の呼び出し
factorial(0)- ここで終了条件に当たり、
1を返す。
戻りながら計算する流れ
factorial(0)が1を返すfactorial(1)=1 * 1= 1factorial(2)=2 * 1= 2factorial(3)=3 * 2= 6
図でイメージ
factorial(3)
→ 3 * factorial(2)
↓
2 * factorial(1)
↓
1 * factorial(0)
↓
1 (終了条件)
戻りながら計算すると:
factorial(0) = 1
factorial(1) = 1 * 1 = 1
factorial(2) = 2 * 1 = 2
factorial(3) = 3 * 2 = 6
ポイント
- 再帰は「潜っていく」ときと「戻ってくる」ときの2段階がある。
- 潜るときは「まだ答えが出ないから次へ進む」。
- 戻るときに「答えが積み上がって完成する」。
