负数的阶乘超过最大调用堆栈大小

时间:2019-03-14 18:11:22

标签: javascript recursion math factorial callstack

为什么在尝试将此简单阶乘函数应用于负数时maximum call stack size exceeded是为什么?

function factorial(n) { 
    if (n == 0) { 
        return 1 
    }

    return n * factorial(n - 1) 
} 

我知道阶乘函数是用于非负整数的,但是我想知道当调用此函数时,JavaScript引擎内部/内部正在发生什么。 -1

1 个答案:

答案 0 :(得分:2)

它运行得很好,因为(n == 0)不满足

如果您传递负数

return n * factorial(n - 1) 

递归调用具有更多负数的阶乘函数,从而不满足(n == 0)条件