実装例
// 階乗を計算する再帰関数
function factorial(n: number): number {
// ベースケース: nが0または1の場合、階乗は1
if (n === 0 || n === 1) {
return 1;
}
// 再帰ケース: n * (n-1)の階乗
return n * factorial(n - 1);
}
// 使用例
console.log(factorial(5)); // 出力: 120
実行されること
factorial(5)
5 * factorial(4)
5 * (4 * factorial(3))
5 * (4 * (3 * factorial(2)))
5 * (4 * (3 * (2 * factorial(1))))
5 * (4 * (3 * (2 * 1)))
5 * (4 * (3 * 2))
5 * (4 * 6)
5 * 24
120
特徴
- ループよりパフォーマンスが悪い
- ループと違い、細かいロジックがわからなくても総当たり的に力技で演算できる
実行されること をイメージするとわかりやすい
- 適した場面ではコードが簡易化される
実行内容の操作箇所
- ベースケースのreturn
- 掛け算だと最後は1、足し算だと最後は0、文字列操作だと空文字をreturnなどとして何もしないようにしたりする等
- 再起ケースのfunctionに渡す引数
- 再起ケースに対しての演算 (
n *の部分)
- それぞれに三項演算子などで条件分岐をつけられる