GoDotDotDot 2016-08-21 05:17 采纳率: 50%
浏览 1043
已采纳

javascript中递归调用问题

首先,我先说下我遇到的问题,我想用递归去计算1到100000的和,但是很不幸的是浏览器给我抛出一个错误:Uncaught RangeError: Maximum call stack size exceede
下面贴一下我的代码:

 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();//输出结果:15624

那么,当我想用递归去计算超过15624次的时候,应该怎么去处理呢?

  • 写回答

4条回答 默认 最新

  • Go 旅城通票 2016-08-22 01:11
    关注

    拆开成小步骤进行递归再合并什么的了,或者不用递归,递归有限制
    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Too_much_recursion

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • Royal_lr 2016-08-21 06:12
    关注

    js是在浏览器上运行的,并不适合做计算。。你可以用c,c++,或者java

    评论
  • yunyunxiongsd 2016-08-21 07:23
    关注

    计算太大的话可以让你的后台语言执行

    评论
  • yunyunxiongsd 2016-08-22 11:31
    关注

    递归是在进行压栈 有限制 而且递归执行效率没有直接用循环快

    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 利用加权最小二乘法求亚马逊各类商品的价格指标?怎么求?
  • ¥15 c++ word自动化,为什么可用接口是空的?
  • ¥15 Matlab计算100000*100000的矩阵运算问题:
  • ¥50 VB6.0如何识别粘连的不规则的数字图片验证码
  • ¥16 需要完整的这份订单所有的代码,可以加钱
  • ¥30 写一个带界面控制的机房电脑一键开机关机并且实时监控的软件
  • ¥15 Stata数据分析请教
  • ¥15 请教如何为VS2022搭建 Debug|win32的openCV环境?
  • ¥15 关于#c++#的问题:c++如何使用websocketpp实现websocket接口调用,求示例代码和相关资料
  • ¥15 51单片机的外部中断,按下按键后不能切换到另一个模式