Числа Фибоначчи весьма интересная последовательность и используется в различных математических задачах. В ней каждый следующий элемент равен сумме двух предыдущих. Математики начинают эту последовательность с двух единиц, но мы же с вами программисты, поэтому привыкли вести счет с нуля.
Напишите генератор fibonacci
, который последовательно возвращает заданное количество чисел Фибоначчи по “правилам программистов”.
Примечание
Ваше решение должно содержать только функции.
В решении не должно быть вызовов требуемых функций.
Пример
Ввод
print(*fibonacci(5))
Вывод
0 1 1 2 3
Ввод
print(*fibonacci(10), sep=', ')
Вывод
0, 1, 1, 2, 3, 5, 8, 13, 21, 34
Лирическое отступление
Надо сказать, что заявляя, что математики начинают последовательность с двух единиц, Яндекс выставляет себя не в лучшем свете. В его материалах в примерах с рекурсией указаны неправильные значения чисел Фибоначчи именно по той причине, что Яндекс сам начинает считать последовательность Фибоначчи с двух единиц прямо в теоретическом материале к этой задаче
Математики же как раз считают последовательность Фибоначчи с нуля и единицы.
Решение
Первая задача на генераторы. С учетом того, что функция по большому счету от генератора отличается только способом возрата значения, задача элементарна: Реализуем алгоритм вычисления последовательности Фибоначчи и на каждой итерации возвращаем полученое число с помощью yeld.
Посмотреть код
Решение
def fibonacci(num):
a = 0
b = 1
for _ in range(num):
yield a
a, b = b, a + b