Почему fib
имеет аргумент double
, когда он целиком использует целочисленную арифметику c?
Что может означать последовательность Фибоначчи для нецелого аргумента?
Все эти приведения и вспомогательные переменные go убираются, если вы используете int
.
static int fib(int n) {
int f[] = new int[n + 2];
f[0] = f[1] = 0;
for (int i = 2; i <= n; i++) {
f[i] = f[i - 1] + f[i - 2];
}
return f[n];
}
Обратите внимание, что вам не нужен явный тест n > 0
; об этом позаботится i <= n
в условии l oop.
Здесь не показано - использование типа double
в основной подпрограмме также следует заменить на int
. И неясно, что вы собираетесь делать с num1
и num2
. Они определенно не связаны с теми переменными, которые сейчас не существуют, которые были объявлены и установлены в ноль в fib
.