递归函数抛出java.lang.StackOverflowError

Han*_*ler 0 java recursion function

我尝试运行代码时收到错误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;
} }
Run Code Online (Sandbox Code Playgroud)

这个问题有解决方法吗?我不得不使用递归函数,而不是等等.

Bat*_*eba 8

1反复的减从zahl 最终给你1(通过在此范围内的整数整数浮点减法确切的:你只能得到上面的2第53届功率古怪).

您的问题是您的JVM可能不会允许您进行许多递归调用.

堆栈深度接近一百万,真的不会结束!