Итератор последовательности Фибоначчи

Генератор хранит предыдущий и следующий элементы, выдаёт первый через yield и обновляет пару. Начальные значения — 0 и 1.

Короткий ответ

Что ответить на собеседовании

Генератор хранит предыдущий и следующий элементы, выдаёт первый через yield и обновляет пару. Начальные значения — 0 и 1.

Подробный разбор

Ответ с пояснениями

Условие

Реализуйте генератор, который последовательно возвращает элементы последовательности Фибоначчи: 0, 1, 1, 2, 3, 5, 8, ….

Ответ

Генератор хранит предыдущий и следующий элементы, выдаёт первый через yield и обновляет пару. Начальные значения — 0 и 1.

def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

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

from itertools import islice
assert list(islice(fibonacci(), 7)) == [0, 1, 1, 2, 3, 5, 8]

Генератор бесконечный, поэтому потребитель должен сам остановиться. Одновременное присваивание важно: сумма использует старые значения a и b. Не создаётся список всех ранее выданных чисел. При больших индексах растёт длина самих целых чисел и стоимость арифметики, несмотря на постоянное число переменных.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее