【问题标题】:Using recursion to sum all numbers between 1 and num使用递归对 1 和 num 之间的所有数字求和
【发布时间】:2021-04-16 19:35:29
【问题描述】:

第一次发帖,所以我尽量遵守这里的规则。我正在尝试编写一个简单的函数,该函数使用递归来返回 1 和 num 之间所有数字的总和。我已经看到了这个解决方案,我知道它是如何工作的,但我不明白为什么这个解决方案不起作用。感谢您提供任何反馈。

const sumNums = (num) => { 
  let total = 0;
  if(num >= 1) {
    total += num;
    sumNums(num-1);
  }
  return total; 
}
console.log(sumNums(5)); // <-- returns 5

【问题讨论】:

标签: javascript recursion


【解决方案1】:

您的特定解决方案不起作用,因为您没有返回 if 分支中的内容。你只有一个回报,这就是为什么你会得到你传入的参数。您还需要添加该内部调用才能使其正常工作。

正确的解决方案已经在here 中。

编辑:我刚刚注意到您明确想要进行递归,这是一个带有(尾)递归的 sn-p。

function sumNumsTailRec(n, acc = 0) {
    if (n === 0) return acc
    return sumNumsTailRec(n-1, acc + n)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2011-02-14
    • 1970-01-01
    • 2020-07-28
    • 2016-09-22
    相关资源
    最近更新 更多