尝试运行代码时出现错误java.lang.StackOverflowError:

public class calc {
    public static void main(String[] args){
double zahl = 847362;
System.out.println( wannawoerk(zahl) );

}


public static double wannawoerk(double zahl){
    if (zahl == 1)
        return 1;
    else
        return wannawoerk(zahl - 1) + zahl;
} }


有没有解决此问题的方法?我必须使用没有for,while等的递归函数。

最佳答案

如果需要使用递归,则可以增加堆栈可用的内存:java -Xss256m YourClass-将堆栈设置为最大256MB。

在现实世界中,您很可能为此使用while循环。或者,在这种情况下,请立即进行计算(您不需要对正在计算的内容进行递归),但是我想这不是重点。

10-07 17:52