Javascript 为什么这个递归的JS程序不起作用,它对返回值的递归起作用

Javascript 为什么这个递归的JS程序不起作用,它对返回值的递归起作用,javascript,recursion,Javascript,Recursion,我创建了一个递归程序,通过递归(返回值)找到所有值的和,直到数字。然后,我想通过将总数作为参数传递来制作相同的程序。这个不行。当我尝试调试时,我发现最后一个else(当n==1时)将porgram带到loader.js。我是新来的,不明白这里发生了什么。寻找你的专家反馈 function sum(n, total = 0) { console.log(n, total); if (n !== 1) { console.log("insie IF"); total += n

我创建了一个递归程序,通过递归(返回值)找到所有值的和,直到数字。然后,我想通过将总数作为参数传递来制作相同的程序。这个不行。当我尝试调试时,我发现最后一个else(当n==1时)将porgram带到loader.js。我是新来的,不明白这里发生了什么。寻找你的专家反馈

function sum(n, total = 0) {
  console.log(n, total);
  if (n !== 1) {
    console.log("insie IF");
    total += n;
    sum(n - 1, total);
  } else {
    console.log("inside ELSE");
    total += 1;
  }
  return total;
}

您需要从对
sum
的递归调用中捕获返回值。
total=sum(n-1,总计)

如何调用此函数?输出/返回值是多少?相反,您期望的是什么?您忽略了递归调用
sum(n-1,total)的返回值@SachinSingh这就是你错的地方
total
是每个调用的本地变量,您没有传递可以变异的引用。您确实需要返回值。@SachinSingh对
sum
的每个调用都有自己的(本地)
total
变量。更新其中一个不会改变其他的。@Bergi和所有人,谢谢你们的帮助,我发现了另一个递归程序已经通过的问题。因为数组是引用类型,所以工作正常,这里我们有total是基元类型,所以最终结果的问题。知道了