私はこのコードを作成しました..そして私はそれを最大限に活用する必要があります..フィボナッチ数を計算する最高のパフォーマンスが本当に必要です..助けてください..
このタイプの計算のコードをいくつか読んだことがありますが、それらを最大限に活用したと思います..
私のためにこれを評価してください..plz..
ps: そして、私は本当に BigInteger が必要です..膨大な数のフィボナッチを計算します
ps2: このアルゴリズムでいくつかの大きな数値を計算したところ、優れた応答時間が得られました..しかし、それがより良いかどうかを知る必要があります
ps3: このコードを実行するには、この VM 引数-Xss16384k
(StackSize)を使用する必要があります
public class Fibonacci {
private static BigInteger[] fibTmp = { BigInteger.valueOf(0), BigInteger.valueOf(1) };
public static BigInteger fibonacci(long v) {
BigInteger fib = BigInteger.valueOf(0);
if (v == 1) {
fib = BigInteger.valueOf(1);
} else if (v == 0) {
fib = BigInteger.valueOf(0);
} else {
BigInteger v1 = fibonacci(v - 1);
BigInteger v2 = fibTmp[(int) (v - 2)];
fib = v1.add(v2);
}
synchronized (fibTmp) {
if (fibTmp.length - 1 < v)
fibTmp = Arrays.copyOf(fibTmp, (int) (v + 10));
fibTmp[(int) v] = fib;
}
return fib;
}
}