0

为什么maximum call stack size exceeded尝试将这个简单的阶乘函数应用于负数?

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

    return n * factorial(n - 1) 
} 

我知道阶乘函数适用于非负整数,但我想知道在例如调用此函数时内部/JavaScript 引擎中发生了什么-1

4

1 回答 1

2

它无限运行,因为 (n == 0) 不满足

如果你传递一个负数

return n * factorial(n - 1) 

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

于 2019-03-14T18:15:26.077 回答