Top.Mail.Ru
Ответы

Код на Паскале. Числа Фибоначчи. Кто может пояснить?

Я знаю, что такое числа Фибоначчи, ряд начинается с 0 и 1, а следующие числа равны сумме двух предыдущих. Но я не до конца понимаю принцип работы в коде. Код на Паскаль. Вывод чисел Фибоначчи до 10, массив. Формула fib(n-1) + fib(n+2), но чего-то не пойму принцип работы m[i -1] + m[i + 2]. Знаю, что первым ноль, вторым - единица, в коде они не выводятся, но можно вывести. m[i - 1] + m[i - 2] это цикл массива, но i - это шаг, но какую роль он здесь играет? Представим, что m[0] и m[1] тоже выводятся, дальше идет m[i - 1] + m[i - 2] , следовательно, выполняется действие 0 + 1 = 1 , и это уже третий элемент, учитывая цифру ноль? Дальше цикл m[i - 1] + m[i - 2] и выполняется действие 1 + 1 = 2, это уже четвертый элемент, учитывая ноль? Верно я понимаю? Просто у меня тут путаница с m[i -2] + m[i - 2] , не совсем понимаю, что именно выполняется, и что каждый раз туда подставляется.

По дате
По рейтингу
Аватар пользователя
Новичок

Да, ты правильно понимаешь. Сначала заполняем два первых элемента массива конкретными значениями. А дальше в цикле по i (начинающемуся с индекса третьего элемента) на каждой итерации цикла очередному элементу m[i] присваивается сумма уже заполненных (при инициализации или на предыдущих итерациях цикла) элементов m[i - 1] и m[i - 2].

Алгоритмы такого типа - когда для получения значения на текущей итерации цикла используются сохранённые значения, полученные на предыдущих итерациях - называются: "динамическое программирование".