Здравствуйте, подскажите пожалуйста. Имеется работоспособный код, который выводит числа Фибоначчи:
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] + " "); и т.д.).
На экран и выводятся элементы, начиная с четвертого.
При i=3
получим:
a[3] = a[1] + a[2] = 1 + 0 = 1
При i=4
:
a[4] = a[2] + a[3] = 0 + 1 = 1
При создании массива, он инициализируется нулями, потом Вы явно инициализируете первый и второй элементы единицами, остальные элементы при этом остаются нулями.
Когда вы инициализируете массив 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
и вот вам две единицы
А далее по возрастающей...
Виртуальный выделенный сервер (VDS) становится отличным выбором
Стоит задача скачать изображения с сайта, создать их файлы на SD карте и поместить в базу пути к нимДля последующего вызова их без подключение...
Как создать уникальные значения HashMap(key, value) через цикл?