Javascript 递归中与post增量和log语句的链接

Javascript 递归中与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

我想让我的函数使用递归打印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 == 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没有递减,而递归使用堆栈,因此堆栈耗尽。