Ho fatto questo codice .. E ho bisogno di ottenere il meglio .. Ho davvero bisogno delle migliori prestazioni di calcolo dei numeri di Fibonacci .. per favore aiutatemi ..Esiste un modo migliore (prestazioni) per calcolare Fibonacci rispetto a questo?
Ho letto qualche codice di questo tipo di calcolo e Penso che ho avuto il meglio di loro ..
Avaliate questo per me .. plz ..
ps: e ho davvero bisogno del BigInteger .. io calcolare Fibonacci di numeri enormi
ps2: ho calcolato alcuni grandi numeri con questo algoritmo e ho ottenuto un ottimo tempo di risposta .. ma ho bisogno di sapere se potrebbe essere meglio
ps3: per eseguire questo codice è necessario utilizzare questo argomento 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;
}
}
Questo sembra java. Per le migliori prestazioni, la lingua potrebbe essere importante. Puoi aggiungere un tag di lingua? –
no .. dimentica la lingua .. è la prestazione dell'algoritmo .. la lingua in questo caso non importa! =) – thiagoh
Come ti piace, ma non tutte le lingue sono uguali alla ricorsività profonda ... –