我正在学习JavaScript的基础知识,并试图编写一个递归函数以将一组整数加在一起。例如,函数参数为1234,结果应为10。到目前为止,这就是我所拥有的...

function sumDigits(numbersStr) {

  var numToString = numbersStr.toString()
  var numArr = numToString.split('').map(Number);

  var sum = 0;

  // base case
  if (numArr.length === 0) {
    return sum
  }

  // recursive case
  else {
    var popped = numArr.pop();
    sum+=popped;
    return sumDigits(numArr);

  }
}


但是,每当我运行此循环时,都会出现无限循环(我的标签页崩溃)。如果我弹出数组的最后一个元素,将其添加到sum变量,然后在缩短的数组上再次调用该函数,那么为什么会出现无限循环?非常感谢!

最佳答案

您的代码中的问题是sumDigits希望获得一个数字,但是在递归中您将数字数组传递给它。

关于javascript - 如何以递归方式对数字求和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48893854/

10-13 04:46