Шаг 7.
Задачи ComputerScience на Python.
Простые задачи. Ряд Фибоначчи. Генерация чисел Фибоначчи

    На этом шаге мы рассмотрим получение последовательности чисел Фибоначчи с помощью генератора.

    До сих пор мы писали функции, которые выводят одно значение из последовательности Фибоначчи. А что, если вместо этого мы хотим вывести всю последовательность вплоть до некоторого значения? С помощью оператора yield функцию fib5() можно легко преобразовать в генератор Python. В процессе итерирования генератора на каждой итерации будет выводиться значение последовательности Фибоначчи с использованием оператора yield.

from typing import Generator


def fib6(n: int) -> Generator[int, None, None]:
    yield 0  # специальный случай
    if n > 0:
        yield 1    # специальный случай
    last: int = 0  # начальное значение fib(0)
    next: int = 1  # начальное значение fib(1)
    for _ in range(1, n):
        last, next = next, last + next
        yield next  # главный этап генерации


if __name__ == "__main__":
    for i in fib6(50):
        print(i)
Архив с файлом можно взять здесь.

    Если запустить fib6().py, то будет напечатано первое 51 число из последовательности Фибоначчи. На каждой итерации цикла for i in fib6(50): функция fib6() выполняется до оператора yield.

0
1
1
2
3
5
8
13
21
34
.   .   .   .
1836311903
2971215073
4807526976
7778742049
12586269025

    Если достигнут конец функции и операторов yield больше нет, то цикл завершает итерирование.

    На следующем шаге мы рассмотрим простейшее сжатие.




Предыдущий шаг Содержание Следующий шаг