gpt4 book ai didi

javascript - Var++ 在 JavaScript 中的递归函数参数中导致 RangeError

转载 作者:行者123 更新时间:2023-11-30 07:32:38 24 4
gpt4 key购买 nike

我在 JavaScript 中有一个简单的线性递归函数来计算一个数的阶乘。

function factorialImproved(n) {

function factorialIter(p, c, m) {
if (c > m) {
return p;
} else {
return factorialIter(c * p, c++, m); // RangeError: Maximum call stack size exceeded // ++c or c+1 is OK
}
}

return (factorialIter(1, 1, n))
}

我想弄清楚为什么我使用 c++ 而不是使用 ++cc+1 时会出现 RangeError。

最佳答案

(c++)评估为 c .所以你调用factorialIter与相同c每次。

因此,c = 1不会大于 m = n除非n < 1 .

然而,(++c)评估为 c+1 .请记住这条规则:

  • (++c) : 先递增然后 c .
  • (c++) : 第一个 c然后递增。

在我看来,你应该使用 c+1 .不要使用 c++++c除非你想使用 c稍后在该范围内。

关于javascript - Var++ 在 JavaScript 中的递归函数参数中导致 RangeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46080767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com