Почему мой метод не работает для поиска значения последовательности Фибоначчи для n-го члена? (Ява)JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему мой метод не работает для поиска значения последовательности Фибоначчи для n-го члена? (Ява)

Сообщение Anonymous »

Я пытаюсь найти значение последовательности Фибоначчи по целому числу N, представляющему n-й термин, используя ArrayList (моя логика заключается в том, что ArrayList является динамическим и может изменять размер независимо от того, какое число дано). Например, 3 должно давать 1, 4 должно давать 2 и т. д. Ниже приведен мой код

Код: Выделить всё

public static Integer NacciTerm (int x){

ArrayList  arr = new ArrayList ();
arr.add(0,0);
arr.add(1,1);

if (x == 1 || x == 0) {
System.out.println(Integer.toString(arr.get(x)));
}
else{
for(int i = 2; i < x; i++)
{
int valueOfTerm = 0;
arr.add(i,valueOfTerm);
valueOfTerm = arr.get(i-1) + arr.get(i-2);
arr.set(i,valueOfTerm);
}
}
return arr.get(x);
}

Если я попытаюсь запустить его в своем основном методе, то всякий раз, когда я ввожу число >= 2, я получаю эту ошибку:

Код: Выделить всё

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 2 out of bounds for length 2
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
at java.base/java.util.Objects.checkIndex(Objects.java:373)
at java.base/java.util.ArrayList.get(ArrayList.java:427)
at FibonnaciSequence.NacciTerm(FibonnaciSequence.java:36)
at FibonnaciSequence.main(FibonnaciSequence.java:69)
Есть предложения или причины?

Подробнее здесь: https://stackoverflow.com/questions/792 ... r-nth-term
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»