JavaScript析因递归

woo*_*gie 1 javascript recursion

在下面的脚本中,为什么badFactorialgoodFactorial工作时吹掉堆栈?

function badFactorial(n){
    if( n < 0){
        return 1;
    }
    if(n < 2){
        return n;
    }
    return badFactorial(n * (n-1));
}
function goodFactorial(n){
    if(n < 2){
        return n;
    }
    return goodFactorial(n-1) * n;
}
Run Code Online (Sandbox Code Playgroud)

Roo*_*ter 5

你的创造无限循环

badFactorial(n * (n-1));

它会继续增加.

说你过去7.你正在做而不是减少

return badfactorial(7 * 6)

当你想要的时候 :

return badfactorial(6) * 7;

所以改变回报就好像是你的好因素,

badfactorial(n-1) * n;