java - 我在这段代码上得到了 StackOverFlowException,因为我的 JVM 不支持尾调用优化,对吧?

标签 java tail-recursion stack-overflow tail-call-optimization

<分区>

我在这个 Java 方法上得到一个 StackOverflowException:

private static final Integer[] populate(final Integer[] array, final int length, final int current) {

    if (current == length) {
        return array;
    } else {
        array[current] = TR.random.nextInt();
        System.out.println(array[current]);
        return populate(array, length, current + 1);
    }
}

我正在玩尾调用递归,所以我想这就是当 JVM 没有使堆栈短路时发生的情况吧?

最佳答案

据我所知,没有任何 JVM 支持尾调用优化。这不是疏忽。显然,这种优化对 Java 反射和 Java 安全管理器有重大影响。

引用资料:

关于java - 我在这段代码上得到了 StackOverFlowException,因为我的 JVM 不支持尾调用优化,对吧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4429341/

相关文章:

haskell - "No instance for (Ord k)"在 Data.Map.Map 上实现 Functor 时

scala - 尾递归 - Scala(任何其他语言)

c - 有没有其他方法可以让程序将主机名打印到标准输出或只是 shellcode?

android - MapFragment 的 onCreateView 中的 StackOverFlowError

java - 在Java中逐字符创建字符串

java - 将图像加载到自定义 ArrayAdapter

java - 在 Maven exec 插件参数中使用通配符

scala - 为什么 Haskell 不需要蹦床?

java - 实时格式化 Android EditText 时如何避免 StackOverflow?

java - 每个字符串后面都占用空间