StackOverflowErrorの理由は何ですか?私はしばらくそれを試していたが、それがなぜ起こるのか、それを修正する方法はまだ得られない。スレッド "main"の例外の修正java.lang.StackOverflowError
コードで使用されている式が必要です。
public static long fib(long n){
if(n == 1 || n == 2)
return 1;
else if(n > 2 && n%2 == 0)//even
return fib((n/2+1)*(n/2+1)) - fib((n/2-1)*(n/2-1));
else //odd
return fib(((n+1)/2)*((n+1)/2)) + fib(((n-1)/2)*((n-1)/2));
}
public static void main(String[] args){
for(int i = 1; i <= 10; i++)
System.out.println(fib(i)+" ");
}
あなたがフィボナッチルーチン作業している:あなたのコードと「嘘」メソッド名を起動する方法については
は、それはあなたが簡単な方法で行うことができフィボナッチを実行しようとしているように見えますここでは、これは(どちらかでも有限再帰)、無限再帰を使用していません:あなたは無限の取得http://stackoverflow.com/questions/29530090/iteral-fibonacci-java-code-returns-0-when-fibonacci-sequence-2 –再帰は '((n + 1)/ 2)*((n + 1)/ 2)> nのため再帰です。 –