Проблема в том, что вы пытаетесь сохранить все элементы в Array
.Однако, поскольку ваш Array
имеет размер только три, вы очень быстро пытаетесь получить доступ к индексу, который находится за пределами.Ваш репетитор прав, что вам нужно только три места.Вы можете сдвинуть элементы, когда у вас закончится свободное место, и перезаписать предыдущие записи.(Вам нужны только два предыдущих числа в последовательности, и затем третье место в Array
будет равно сумме двух предыдущих)
Так что это будет выглядеть примерно так:
повторений:
[1, 1, 2]
[1, 2, 3]
[2, 3, 5]
[3, 5, 8]
И так далее.Чтобы сделать это, вы можете сдвинуть каждый элемент влево с помощью простого цикла for:
public static long[] fibonacci(int fibonacciNumberInOrder) {
long [] fibonacci = new long [] {1,1,2};
for (int i = 0; i < fibonacciNumberInOrder; i++) {
System.out.print(Arrays.toString(fibonacci) + ", ");
for(int j = 1; j < 3; j++) {
fibonacci[j-1] = fibonacci[j];
}
fibonacci[2] = fibonacci[1] + fibonacci[0];
}
return fibonacci;
}
Если вы пытаетесь распечатать Array
, возвращенный методом, то вам необходимо распечатать результатыметод вместо игнорирования возвращаемого значения, и вам необходимо удалить оператор print в методе:
public static void main(String[] args) {
int fibonacciNumberInOrder = 5;
System.out.println(Arrays.toString(fibonacci(fibonacciNumberInOrder)));
}