本文介绍了JavaScript 阶乘递归的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在下面的脚本中,为什么 badFactorial 会在 goodFactorial 工作时炸掉堆栈?

In the following script, why does badFactorial blow the stack while goodFactorial works?

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;
}

推荐答案

你的创造无限循环

badFactorial(n * (n-1));

它只会不断增加.

假设你通过了 7 .而不是减少,你正在做

say you passe in 7 . instead of decreasing, youre doing

返回 badfactorial(7 * 6)

当你想要时:

return badfactorial(6) * 7;

因此将回报更改为您的好因子,

so change the return to be like youre goodfactorial's ,

badfactorial(n-1) * n;

这篇关于JavaScript 阶乘递归的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-14 22:13