[英]Recursive function using rest operator not returning in JavaScript
假設您要編寫一個以累加器和任意數量的int作為參數的遞歸函數,並且要在所有參數加總后返回累加器。 我試圖表達如下:
function f(x, ...y) {
if (!y.length) {
return x;
}
else {
x += y.shift();
f(x, ...y);
}
}
f(0,2,4,7,8,4)
如果將console.log(x)
添加到第一個if
語句,您將看到正確的答案,但是當您運行該函數時,它返回undefined
,那么它在遞歸鏈中的什么地方迷路了? 我相信我對該遞歸函數的基本假設是正確的,但我希望獲得一些見解。
你必須從else
回來。
function f(x, ...y) {
if (!y.length) {
return x;
} else {
x += y.shift();
return f(x, ...y);
// ^^^^^^^
}
}
在您的代碼中,如果y.length !== 0
那么您在else
塊中,則調用應該返回一個值的f
,但不會將該值返回給稱為f
任何值。
您需要將函數返回給自身:
return f(x, ...y);
function f(x, ...y) { if (!y.length) { return x; } else { x += y.shift(); return f(x, ...y); } } console.log(f(0, 2, 4, 7, 8, 4))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.