简单的递归基础案例

时间:2017-02-21 19:06:31

标签: javascript recursion

为什么这个函数返回undefined?我已经看到了更清晰,更好的方法来做到这一点,我理解修改像这样的数组通常是不好的做法。尽管如此,我还不清楚为什么这个例子不会返回15.我的控制台记录就像疯了一样。提前感谢您的禅宗新手容忍。

我看到的步骤:

  • 传入数组并且不提供默认为0
  • 的第二个参数
  • 弹出数组值,并将其添加到总计
  • 递归调用传递新缩短的数组以及当前总数。
  • 当数组的长度等于零时,满足退出条件并返回总数。

var sumOfArray = function(array, total = 0) {
  var temp = 0;

  // base case
  if (array.length == 0) {
    return total;
  }

  temp += array.pop();
  total += temp;

  sumOfArray(array, total);
};


console.log('sumOfArray([1, 2, 3, 4, 5]=' + sumOfArray([1, 2, 3, 4, 5]));

1 个答案:

答案 0 :(得分:1)

嘿,大多数代码上的所有内容都是正确的。你只是在else块和其他一些小东西中错过了一个return语句;我们都去过那里。

var sumOfArray = function(array, total=0) { 
  var temp = 0;
  if (array.length === 0) { 
    return total;
  } else {
    temp += array.pop(); 
    total += temp;
    return sumOfArray(array, total);
  }
}

sumOfArray([1,2,3,4,5])