再帰関数の挙動

2024/09/15に公開

概要

再帰関数の挙動について

以下関連記事
https://zenn.dev/417yr/articles/f732588bd043da
https://zenn.dev/417yr/articles/80cf5ba2dae627

再帰関数実行時の流れ

以下の再帰関数
sum(2)、つまり1から2までの総和を求める場合を例に説明。

test.js
// 1 から n までの総和を計算する関数sum
function sum(n){
    // ループを終了させるベースケース
    if (n <= 0) {
        return 0;
    }
        
    return sum(n-1) + n;
}

①push

2 + sum(1)にて、
加算演算子「+」よりも、関数の呼び出し「sum(1)」の方が優先順位が高いため、
sum(1)が先に実行される

1 + sum(0)にて、
加算演算子「+」よりも、関数の呼び出し「sum(0)」の方が優先順位が高いため、
sum(0)が先に実行される

②pop

sum(0)が実行され、
sum(0)の箇所が戻り値「0」で上書きされる

関数の実行が終わったら、
後回しにされていた演算子が実行される

Discussion