`
JerryWang_SAP
  • 浏览: 1064522 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

不同编程语言在发生stackoverflow之前支持的调用栈最大嵌套层数

阅读更多

今天我的一位同事在微信群里发了一张图片,勾起了我的好奇心:不同编程语言支持的函数递归调用的最大嵌套层数是?

 

Java 1.8


private static void recur(int i){

  System.out.println("Stack level: " + i);

  recur(++i);

}

测试结果:8644

 

Javascript in Chrome

Chrome版本:

Version 70.0.3538.102 (Official Build) (64-bit)


function a(i){

   console.log("stack level: " + i)

   a(i+1);

}

a(0);

测试结果:11412

 

JavaScript in nodejs

nodejs version: v8.11.3

 

测试结果:11213

Golang

版本:

 
 

测试结果:3947556

 

ABAP


data: lv_temp type int4.

form recur using iv type int4.

  sy-index = iv.

  lv_temp = iv + 1.

  perform recur using lv_temp .

endform.

START-OF-SELECTION.

   perform recur using 0.

实际上是out-of-memory错误。

 

测试结果:12258206

 

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

 
分享到:
评论

相关推荐

    清晰的JVM架构

    5. **本地方法栈**:与Java栈类似,但是用于支持本地方法的调用。 6. **Java栈**:每个线程私有的,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。 7. **运行环境区**:指执行某个方法时所需的内存区域...

    JAVA程序员最常遇见的10个异常

    当程序递归调用层次太深或方法栈空间不足时,会抛出`StackOverflowError`。这种异常通常与递归算法的设计有关,或者是由于方法内部无限循环导致的。为了避免这类异常,可以通过调整递归算法或减少不必要的嵌套调用来...

    Java 基础(6-8) - 异常机制详解.pdf

    当异常发生时,JVM会创建一个异常对象,并根据当前调用栈寻找适当的异常处理器。这个过程涉及到栈帧的回溯和异常匹配规则,可能会影响性能。因此,合理地使用异常处理可以避免不必要的性能损失。 总的来说,Java...

    Javacc常用问题解答

    JavaCC 是一个用于构建解析器(parser)和词法分析器(lexer)的工具,能够帮助开发者快速地为编程语言或特定领域语言创建解析器。JavaCC 支持递归下降解析算法,并能自动生成 Java 代码。 **1.3 能否更详细地解释...

    Java 全方面面试题(有一定深度,无答案,谨慎下载!!!)

    当线程请求的栈深度超过 JVM 所允许的最大深度时,会抛出 `StackOverflowError`。 #### 25. JVM 内存结构 - **堆内存**:存储对象实例。 - **栈内存**:存储局部变量和方法调用信息。 - **方法区**:存储类信息、...

    Android编程中TextView宽度过大导致Drawable无法居中问题解决方法

    3. 自定义的`DrawableTextView`重写了`onFinishInflate()`方法,确保在视图完成初始化后调用`initText()`。 4. 提供了一个`setText`方法的重写版本,这样在改变文本内容时,可以更新文本的宽度和高度。 5. 需要...

    百度校园招聘历年经典面试题汇总:Android岗

    - **OOM**(Out Of Memory)通常发生在程序分配内存过多或内存泄漏的情况下。 - **判断**:即使当前使用内存低于最大限制,如果分配大对象时无法找到足够的连续内存空间,也会发生OOM。 #### 18. Android中的跨进程...

Global site tag (gtag.js) - Google Analytics