gpt4 book ai didi

javascript - 递归可以调用多少次?

转载 作者:行者123 更新时间:2023-11-27 22:36:39 25 4
gpt4 key购买 nike

我想使用递归计算从1到100000的总和,但是当我运行以下代码时,浏览器抛出异常(Uncaught RangeError:超出最大调用堆栈大小)。

代码:

function sum(num){
if(num > 0){
num +=arguments.callee(num-1);
}
return num;
};
sum(100000);
然后,我使用以下函数来计算可用于的时间递归。

    function computeMaxCallStackSize() {
try {
return 1 + computeMaxCallStackSize();
} catch (e) {
// Call stack overflow
return 1;
}
};computeMaxCallStackSize();//output:15624
那么,当我使用递归计算超过15624次时,我该怎么办?

最佳答案

你的递归太多了。这是特定于浏览器的,不仅是堆栈大小,还有优化,例如尾递归优化之类的东西。我想这里唯一可靠的事情是以一种不会将大量内容放入堆栈的方式进行编码,或者手动测试(深入阅读其文档)每个浏览器。毕竟,当您看到“太多递归”错误或类似错误时,您已经知道您的代码确实存在问题。

您可以采取以下措施来避免过多的递归:

  • 使用迭代而不是递归;
  • 使用Memoization ;
  • 使用SetTimeOut

关于javascript - 递归可以调用多少次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39061154/

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