簡體   English   中英

使用rest運算符的遞歸函數未在JavaScript中返回

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM