// Я узнал о рекурсии в Java. /** Я пытаюсь вычислить 45-е число Фибоначчи, используя массив, чтобы сократить время, которое не работает хорошо ... сообщение об ошибке: Исключение в потоке «main» java.lang.ArrayIndexOutOfBoundsException: 45 в Auf1.fib2 (Auf1.java:25) в Auf1.main (Auf1.java:49) **/Расчет числа Фибоначчи с массивом
public class Auf1 {
public static long[] feld;
public static long fib2(long n) {
if ((n == 1) || (n == 2)) {
return 1;
} else {
if (feld[(int) n] != -1) {
return feld[(int) n];
} else {
long result = fibo(n - 1) + fibo(n - 2);
feld[(int) n] = result;
return result;
}
}
}
public static void main(String[] args) {
long n = 45;
feld = new long[(int) n];
for (int i = 0; i < n; i++) {
feld[i] = -1;
}
long result = fib2(n);
System.out.println("Result: " + result);
}
}
Сделать массив один элемент больше: 'Feld = новый длинный [(целое) п + 1];' (допустимые индексы от 0 до длины-1) – Henry
ли Вы должны использовать массив? Нужно ли хранить предыдущие вычисления последовательности фибоначчи? –
Конечно, итеративный способ намного быстрее, но его хорошая практика, чтобы войти в контакт с динамическим программированием. – user