2010-05-10 36 views

回答

33

Nicholas C. Zakas writes in his blog

  • 的Internet Explorer 7:1789
  • 火狐3:3000
  • 铬1:21837
  • 歌剧9.62:10,000
  • 的Safari 3.2:500

在不同的浏览器和操作系统上有更多的数据here

我创建了一个浏览器测试来获取更多日期。 Please run it here

+1

我非常快速地阅读文章后,我把它扔在一起:http://jsfiddle.net/TdWTs/ – endemic 2013-04-10 19:41:46

+0

@endemic很好的工作。我在http://adamrich.name/recursion.html上为这个问题制作了一个浏览器。如果我们可以让很多人运行测试,我们可以通过浏览器和操作系统获得最新的recusrion限制表。 – Adam 2013-04-11 17:36:07

+0

我的阅读理解技巧需要更多的工作......完全跳过了您已经完成了浏览器测试的部分。我运行它几个浏览器,令人惊讶的是Chrome有最低的限制!哦,一位同事担心几百次递归迭代(wat),所以我有兴趣找到真相。 – endemic 2013-04-11 19:19:14

10

要添加到这里的答案,这也可以取决于递归中涉及的函数。举例来说,只是增加了几个参数的函数可以改变结果:

var i=0; 
function inc() { 
    i++; 
    inc(); 
} 
inc(); 

给了我20923,但

var i=0; 
function inc(j, k, l) { 
    i++; 
    inc(l, k, j); 
} 
inc(1, 2, 3); 

报告13949(在控制台中铬39测试)。 Firefox 34分别提供25085和13572。

在零参数inc()的正文周围添加try/catch块会在Chromium中提供11413个帧,在Firefox中提供13161个帧。通过3个参数和try/catch块,Chrome中的8967和Firefox中的7517。

我从这里得出的结论是,一个在浏览器中的堆栈深度附近工作的应用程序可能只能根据类似于应用程序中使用的那些函数的经验测量来计算出结果。

相关问题