双数字返回stackoverflow

时间:2014-10-18 22:48:20

标签: java function double stack-overflow

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); 
  }
}

感谢目前为止的答案。我的问题是:我如何使我的代码工作?

2 个答案:

答案 0 :(得分:5)

这里的问题不是double可以容纳的数字大小 - 问题是堆栈的大小。在这里,您对summe进行了20K嵌套调用,对于堆栈来说,它的方式太多了,因此它会溢出。如果sint而不是double,则您会遇到完全相同的问题。

答案 1 :(得分:0)

你对summe进行了太多的递归调用。

您应该仔细阅读此问题以获得完整的解释:What is a StackOverflowError?