double
代表的最高数字非常高,我想。
虽然以下代码抛出异常。这实际上是我的完整代码。
public class Summe {
public static void main(String[] args) {
System.out.println(summe(20000));
}
public static double summe(double s) {
return s == 0 ? s : s + summe(s-1);
}
}
感谢目前为止的答案。我的问题是:我如何使我的代码工作?
答案 0 :(得分:5)
这里的问题不是double
可以容纳的数字大小 - 问题是堆栈的大小。在这里,您对summe
进行了20K嵌套调用,对于堆栈来说,它的方式太多了,因此它会溢出。如果s
是int
而不是double
,则您会遇到完全相同的问题。
答案 1 :(得分:0)
你对summe
进行了太多的递归调用。
您应该仔细阅读此问题以获得完整的解释:What is a StackOverflowError?