Javascript 使用递归对1和num之间的所有数字求和

Javascript 使用递归对1和num之间的所有数字求和,javascript,recursion,Javascript,Recursion,第一篇文章,所以我尽我所能遵守这里的规则。我正在尝试编写一个简单的函数,它使用递归返回1到num之间所有数字的总和。我已经看到了这个问题的解决方案,我知道它是如何工作的,但我不明白为什么这个解决方案不起作用。任何反馈都将不胜感激 const sumNums = (num) => { let total = 0; if(num >= 1) { total += num; sumNums(num-1); } return total; } consol

第一篇文章,所以我尽我所能遵守这里的规则。我正在尝试编写一个简单的函数,它使用递归返回1到num之间所有数字的总和。我已经看到了这个问题的解决方案,我知道它是如何工作的,但我不明白为什么这个解决方案不起作用。任何反馈都将不胜感激

const sumNums = (num) => { 
  let total = 0;
  if(num >= 1) {
    total += num;
    sumNums(num-1);
  }
  return total; 
}
console.log(sumNums(5)); // <-- returns 5
const sumNums=(num)=>{
设total=0;
如果(num>=1){
总数+=num;
sumNums(num-1);
}
返回总数;
}

console.log(sumNums(5));// 您的特定解决方案不起作用,因为您没有返回
if
分支中的内容。您只有一个返回,这就是为什么您可以得到在参数中传递的内容。您还需要将内部调用相加才能使其工作

适当的解决方案已经在实施中

编辑:我刚刚注意到您明确地想要执行递归,这里有一个带有(尾部)递归的片段

函数sumNumsTailRec(n,acc=0){
如果(n==0)返回acc
返回集水坑(n-1,acc+n)
}

您没有对sumNums(num-1)
的结果进行任何操作。尝试
total=num+sumNums(num-1)重复您正在将总计重置为
0
。这是唯一的问题。或者
constsumnums=n=>n==0?0:n+sumNums(n-1)
这不是MrUpsidown的唯一问题。