Java. Фибоначчи

163
26 ноября 2016, 19:11

Здравствуйте, подскажите пожалуйста. Имеется работоспособный код, который выводит числа Фибоначчи:

public class Fibonachi2 {
public static void main(String[] args) {
    int[] a = new int[10];
    a[0] = 1;
    a[1] = 1;
    for(int i = 0; i < a.length; i++) {
        if(i > 2) {
        a[i] = a[i - 2] + a[i - 1];
        System.out.print(a[i] + " ");
        }
    }
}

}

Результат: 1 1 2 3 5 8 13

Но меня интересует как он выводит первые две единицы? Ведь по условию:

 if(i > 2) {
    a[i] = a[i - 2] + a[i - 1];
    System.out.print(a[i] + " ");
    }

он должен выводить элементы на экран, начиная с 4 элемента массива (System.out.print(a[3] + " "); и т.д.).

Answer 1

На экран и выводятся элементы, начиная с четвертого.

При i=3 получим:

a[3] = a[1] + a[2] = 1 + 0 = 1

При i=4:

a[4] = a[2] + a[3] = 0 + 1 = 1

При создании массива, он инициализируется нулями, потом Вы явно инициализируете первый и второй элементы единицами, остальные элементы при этом остаются нулями.

Answer 2

Когда вы инициализируете массив int[] a = new int[10];, то он заполняется нулями:

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}

Далее после строк

a[0] = 1;
a[1] = 1;

Получаем

{1, 1, 0, 0, 0, 0, 0, 0, 0, 0}

Ну а далее все просто: при срабатывании первый раз условия if(i > 2), т .е. когда i = 3 получаем:

 a[i - 2] + a[i - 1]; => a[1] + a[2] => 1 + 0 => 1

при i = 4

 a[i - 2] + a[i - 1]; => a[2] + a[3] => 1 + 0 => 1

и вот вам две единицы

А далее по возрастающей...

READ ALSO
Загрузка изображений c интернета на SD карту Android

Загрузка изображений c интернета на SD карту Android

Стоит задача скачать изображения с сайта, создать их файлы на SD карте и поместить в базу пути к нимДля последующего вызова их без подключение...

289
Создание уникальных key и value через цикл в java

Создание уникальных key и value через цикл в java

Как создать уникальные значения HashMap(key, value) через цикл?

192
Остановка работы SAXParser

Остановка работы SAXParser

Здравствуйте

156