【发布时间】:2014-11-09 17:09:28
【问题描述】:
我在递归调用中收到StackOverflowError:
Exception in thread "main" java.lang.StackOverflowError
at Test.trailMngr(Test.java:112)
at Test.trailMngr(Test.java:115)
at Test.trailMngr(Test.java:115)
at Test.trailMngr(Test.java:115)
at Test.trailMngr(Test.java:115)
...
Java Result: 1
有没有办法在不更改代码的情况下解决这个问题?
我能想到的唯一方法是使其成为非递归方法。
代码中的所有其他内容在较小的输入大小下都可以正常工作——如果可能的话,我会避免更改(尽管我不抱希望)。
不太熟悉 Java 在这些事情上的表现。
TIA。
【问题讨论】:
-
递归调用是否终止?您可以增加线程堆栈空间大小。 See here 和 other related questions/answers.
-
用给定的输入很难回答你的问题
-
我认为您的递归代码没有优雅地终止。但如果您确定终止逻辑,则应考虑通过 -Xss 选项增加堆栈大小。
-
@SamDJava 我正在运行指数算法。而且我不认为我在逻辑上犯了错误。
标签: java jvm stack-overflow