Javascript 递归中与post增量和log语句的链接
我想让我的函数使用递归打印sumJavascript 递归中与post增量和log语句的链接,javascript,recursion,Javascript,Recursion,我想让我的函数使用递归打印sum function sumOf(num){ if(num == 1 ) return 1; console.log("we are seeing decrement",num--) return num + sumOf(num--); } console.log(sumOf(6)) 输出:- 我得到了错误的输出为什么 正确输出:-21 function sumOf(num){ if(num
function sumOf(num){
if(num == 1 ) return 1;
console.log("we are seeing decrement",num--)
return num + sumOf(num--);
}
console.log(sumOf(6))
输出:-
我得到了错误的输出为什么
正确输出:-21
function sumOf(num){
if(num == 1 ) return 1;
return num + sumOf(num--);
}
console.log(sumOf(6))
输出:-
RangeError: Maximum call stack size exceeded
at sumOf (C:\Users\mdvenkat\Desktop\dataStructures and algortherms\recurssion_2.js:4:18)
at sumOf (C:\Users\mdvenkat\Desktop\dataStructures and algortherms\recurssion_2.js:4:18)
at sumOf (C:\Users\mdvenkat\Desktop\dataStructures and algortherms\recurssion_2.js:4:18)
at sumOf (C:\Users\mdvenkat\Desktop\dataStructures and algortherms\recurssion_2.js:4:18)
at sumOf (C:\Users\mdvenkat\Desktop\dataStructures and algortherms\recurssion_2.js:4:18)
at sumOf (C:\Users\mdvenkat\Desktop\dataStructures and algortherms\recurssion_2.js:4:18)
at sumOf (C:\Users\mdvenkat\Desktop\dataStructures and algortherms\recurssion_2.js:4:18)
为什么现在我得到了RangeError,log语句和递归之间有什么联系吗
注意:-我知道如果我们将num--更改为num-1,它将正常工作,但我想知道以下错误的原因(相同的代码,但只删除了控制台日志)嗯,它正常工作
函数sumOf(num){
如果(num==1)返回1;
log(“我们看到减量”,num--)
返回num+sumOf(num--);
}
log(sumOf(6))
好吧,它按预期工作
函数sumOf(num){
如果(num==1)返回1;
log(“我们看到减量”,num--)
返回num+sumOf(num--);
}
log(sumOf(6))
像这样更改代码。您正在使用后减量运算符,否则请使用预减量运算符
function sumOf(num){
if(num === 1 ) return 1;
return num + sumOf(--num);
}
console.log(sumOf(6))
像这样更改代码。您正在使用后减量运算符,否则请使用预减量运算符
function sumOf(num){
if(num === 1 ) return 1;
return num + sumOf(--num);
}
console.log(sumOf(6))
它产生差异的原因是因为n--(不同于--n或n-1)在递减之前返回值 如果使用后缀,在操作数后加上运算符(例如,x-),则 递减运算符递减并返回之前的值 递减的 资料来源:
它之所以产生差异,是因为n--(不同于--n或n-1)在递减之前返回值 如果使用后缀,在操作数后加上运算符(例如,x-),则 递减运算符递减并返回之前的值 递减的 资料来源:
它转到无限循环,因为num没有递减,而递归使用堆栈,因此堆栈耗尽。它转到无限循环,因为num没有递减,而递归使用堆栈,因此堆栈耗尽。