Реализовать генератор отдающий последовательности Фибоначчи

9. Реализовать генератор отдающий последовательности Фибоначчи

Условие задачи:
Написать генератор, отдающий числа Фиббоначи

Спойлеры к решению
Подсказки
  • Генератор в Python создаётся с помощью yield.
  • Числа Фибоначчи строятся так: каждое следующее число равно сумме двух предыдущих.
  • Начать можно с 0 и 1.
  • После выдачи текущего числа нужно обновить пару значений: a, b = b, a + b.
  • Такой генератор может быть бесконечным, поэтому количество чисел лучше ограничивать снаружи.
Решение
def fibonacci():
    a = 0
    b = 1

    while True:
        yield a
        a, b = b, a + b

Пример использования:

gen = fibonacci()

for _ in range(10):
    print(next(gen))

Результат:

0
1
1
2
3
5
8
13
21
34

Функция fibonacci() является генератором, потому что использует yield. Она не возвращает весь список чисел сразу, а отдаёт по одному числу при каждом вызове next().

После каждого yield значения обновляются:

a, b = b, a + b

То есть текущее число становится предыдущим, а новое следующее число считается как сумма двух прошлых.