Классическая лёгкая задача для воскресенья.
Числа Фибоначчи довольно широко используются в спортивном программировании и часто встаёт задача их нахождения (всех или какого-то конкретного), поэтому полезно с самого начала их понять и научиться находить.
Здесь ограничения очень маленькие. Это связано с тем, что числа Фибоначчи растут очень быстро. Для больших номеров их значение приближается к золотому сечению (1.618...) в степени n (с точностью до константы):
Поэтому, чтобы не связываться в задаче для начинающих с длинной арифметикой, выбрано ограничение до 30, чтобы ответ помещался в стандартные типы данных.
Самые упорные могут решать эту задачу с помощью 30-ти if-ов, но лучше, всё же использовать цикл. Простым решением было бы завести список, положить в него 0 и 1, потом циклом смотреть в два последних элемента списка и вычислять следующий. Но что делать, если и списки пока неизвестны?
Стоит обратить внимание, что каждый раз нам не нужен весь список, а требуется только пара элементов (но на каждой итерации цикла новая), поэтому можно хранить лишь два последних элемента "виртуального" списка и на каждой итерации цикла обновлять их.
Наиболее читаемый код получается на языке Python, поэтому давайте смотреть:
Если a - это предпоследний элемент списка, а b - последний, то на следующей итерации цикла уже b становится предпоследним (поэтому её значение присваиваем в a), а последним элементом становится сумма. За счёт одновременного присвоения мы можем так записать. В языке С++, например, пришлось бы использовать дополнительную переменную, чтобы сохранить в ней сумму, а только потом сделать присваивание в a.
Однако это не самый быстрый способ вычисления чисел Фибоначчи, но об этом как-нибудь в другой раз, просто знайте)
Предыдущий выпуск: Задача 501. Строение
Я очень хочу, чтобы мои советы были полезны вам, а для того, чтобы быстрее всех получать новые статьи можно подписаться на мой канал.