【发布时间】:2019-08-05 18:04:42
【问题描述】:
为什么在尝试将这个简单的阶乘函数应用于负数时是maximum call stack size exceeded?
function factorial(n) {
if (n == 0) {
return 1
}
return n * factorial(n - 1)
}
我知道阶乘函数适用于非负整数,但我想知道在调用此函数时内部/JavaScript 引擎中发生了什么,例如-1。
【问题讨论】:
-
您的
if应该测试n <= 0。否则递归将如何停止? -
它正在尝试计算
-1 * -2 * -3 * -4 * -5 * -6 * -7 ...并且内存不足,因为它永远不会停止进行嵌套函数调用。
标签: javascript recursion math factorial callstack