🙄
再帰関数
概要
関数が、その関数内で自身を関数として呼び出す処理を再帰という。
関数のreturn文の中に、その関数自体が含まれているイメージ。
(関数Aのreturn文の中で関数Aを呼び出し、
さらにその呼び出された関数Aの中でも関数Aが呼ばれる、、、という入れ子構造)
ただそれだけだと永遠に自身の関数を呼び出し続けてしまい、
無限ループに陥ってしまう。
なのでループを終了させる「ベースケース」を常に考慮する必要がある。
詳細
sum(5)、つまり1から5までの総和を求める場合を例に説明。
ベースケースに辿り着くまで関数呼び出しが繰り返される
ソースコード
test.js
// 1 から n までの総和を計算する関数sum
function sum(n){
// ループを終了させるベースケース
if (n <= 0) {
return 0;
}
return sum(n-1) + n;
}
console.log(sum(5));
Discussion