Javascript 为什么这个递归的JS程序不起作用,它对返回值的递归起作用
我创建了一个递归程序,通过递归(返回值)找到所有值的和,直到数字。然后,我想通过将总数作为参数传递来制作相同的程序。这个不行。当我尝试调试时,我发现最后一个else(当n==1时)将porgram带到loader.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
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是基元类型,所以最终结果的问题。知道了