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

问题描述 投票:0回答:1

当试图将这个简单的阶乘函数应用于负数时,为什么maximum call stack size exceeded

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

    return n * factorial(n - 1) 
} 

我理解阶乘函数是针对非负整数的,但我想知道在调用此函数时,内部/在JavaScript引擎中发生了什么。 -1

javascript recursion math factorial callstack
1个回答
2
投票

它无限运行,因为(n == 0)不符合

如果你传递一个负数

return n * factorial(n - 1) 

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

© www.soinside.com 2019 - 2024. All rights reserved.