🙄

再帰関数

2024/09/11に公開

概要

関数が、その関数内で自身を関数として呼び出す処理を再帰という。
関数の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