У меня есть следующий код, который обеспечивает правильные значения для п < 47.последовательность Фибоначчи при п> 46 Java
public static int fib(int n) {
int nthTerm = 0;
if (n == 2)
nthTerm = 1;
else {
double goldenRatio = (1 + Math.sqrt(5))/2;
nthTerm = (int) (Math.round(Math.pow(goldenRatio, n)
- Math.pow(1 - goldenRatio, n))/Math.sqrt(5));
if (n % 2 == 1 && n < 45)
nthTerm++;
}
return nthTerm;
}
Любое значение для п> 46 находится вне диапазона Int. Как я мог адаптировать этот подход к работе при n> 46?
P.S. Я знаю BigInteger, но не очень разбираюсь в этом, поэтому я был бы признателен за использование BigInteger.
Используйте 'long' вместо' int'. –
Или 'BigInteger' для поддержки значений вне диапазона' long'. – Andreas