Ecco il codice che ho scritto per trovare il numero di Fibonacci n-esimo:Non firmato Long lungo non andrà oltre il 93 ° numero di Fibonacci?
unsigned long long fib(int n)
{
unsigned long long u = 1, v = 1, t;
for(int i=2; i<=n; i++)
{
t = u + v;
u = v;
v = t;
}
return v;
}
Mentre l'algoritmo funziona abbastanza rapidamente, l'uscita inizia a freak out quando n> 93. Penso che lo sappia a causa della lunghezza a 64 bit dei lunghi non firmati. Sono nuovo al C++, ma ci sono modi per aggirare questo, così posso ottenere la risposta di qualcosa come fib (9999)?
Grazie
Interessante. Sono stato sorpreso che i numeri di Fibonacci sono cresciuti abbastanza rapidamente che F (94)> ~ 2^63. –
Errr ... come può funzionare questo codice senza parentesi per il ciclo 'for'? –
@Everyone Spiacente ho fatto alcuni errori inserendo il codice. Questo è solo un errore nella trascrizione però. fib (94) mi dà ancora qualche numero di Frankenstein ... –