Здравствуйте, подскажите пожалуйста. Имеется работоспособный код, который выводит числа Фибоначчи:
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
и вот вам две единицы
А далее по возрастающей...
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости