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
То есть текущее число становится предыдущим, а новое следующее число считается как сумма двух прошлых.