いくつかの再帰を試していたところ、混乱することに気付きました。いくつかのコード例で説明しましょう:
function loop(x) {
if (x >= 10)
return x;
loop(x + 1); // the recursive call
}
loop(0);
上記の呼び出しは を返しますundefined
。に変更すると
function loop(x) {
if (x >= 10)
return x;
return loop(x + 1); // the recursive call
}
loop(0);
10
その後、正しく戻ります。
なぜこれが起こるのですか?return
句はスタックにどのように影響しますか?
PS:同様の質問
編集: これは、私が理解したことの概要を示す簡単な画像です。(絵の具は一切持っていません。)そうですか?そうでない場合、どこで間違っていますか?