再帰関数の戻り値の問題へのネイティブな日本語での言い換え
JavaScriptでは、再帰関数の戻り値の問題は以下の方法で解決できます。
- グローバル変数を使用: グローバル変数を定義し、再帰関数が呼び出されるたびにグローバル変数の値を更新し、最後にグローバル変数の値を返します。この方法はシンプルですが、グローバル変数の使用は名前の衝突や他の問題を引き起こす可能性があることに注意してください。
let result = 0;
function recursiveFunc(n) {
if (n <= 0) {
return;
}
result += n;
recursiveFunc(n - 1);
}
recursiveFunc(5);
console.log(result); // 输出15
- 関数引数経由:再帰関数で再帰呼び出しの結果を引数として受け取り、再帰呼び出しごとにその結果を蓄積し、最後に結果を戻す。この方法はグローバル変数を使用する必要がなく、より安全である。
function recursiveFunc(n, sum = 0) {
if (n <= 0) {
return sum;
}
return recursiveFunc(n - 1, sum + n);
}
console.log(recursiveFunc(5)); // 输出15
どちらの方法においても、再帰の終了条件に達した際には何らかの値を返すようにしなければ、再帰関数は undefined を返してしまうことに注意してください。