Existe uma maneira melhor (performance) calcular o fibonacci do que este?
Eu fiz este código .. E eu preciso para obter o melhor dele .. Eu realmente preciso do melhor desempenho de calcular números de fibonacci .. por favor, ajudem ser ..
Eu li algum código desse tipo de cálculo e acho que consegui o melhor deles ..
Avalie isso para mim .. plz ..
ps: E eu realmente preciso do BigInteger .. Vou calcular o Fibonacci de números enormes
ps2: Eu calculei alguns números grandes com este algoritmo e obtive um ótimo tempo de resposta ... mas eu preciso saber se poderia ser melhor
ps3: para rodar esse código você precisará usar esse argumento de VM-Xss16384k
(Tamanho da pilha)
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;
}
}