フィボナッチ数を計算するプログラムを書きました。最初はリソースの関係で大きな数字を入力できませんでしたが、書き直した今ではかなりの速度で実行されます。ただし、intsを使用すると、大きな数値を入力すると数値が負になります。longを使用してみましたが、ラップアラウンドもかなり高速です。意味がわからない場合は、次のコードで説明します。
`System.out.println("The 536th fibonacci number: "fib(536));`
`*The 536th fibonacci number: -8757250051716203595*`
明らかに、この文脈では負の数は意味をなさないので、どうすれば常に機能するようにできるのか疑問に思っていました-何があってもラップアラウンドしません.
編集:問題は解決しました!
import java.math.BigInteger;
public static BigInteger fib(int n)
{
return fib2h(n,BigInteger.ONE,BigInteger.ONE);
}
public static BigInteger fibh(int n,BigInteger o,BigInteger p)
{
if(n==1) return o;
return fib2h(n-1,p,o.add(p));
}