⚡️ Задача с собеседования |: #Junior



Условие



Числа Фибоначчи представляют последовательность, получаемую в результате сложения двух предыдущих элементов.

Начинается коллекция с чисел 1 и 1.

Она достаточно быстро растет, поэтому вычисление больших значений занимает немало времени.

Создайте функцию fib(n), генерирующую n чисел Фибоначчи с минимальными затратами ресурсов.

Для реализации этой функции потребуется обратиться к инструкции yield.

Она не сохраняет в оперативной памяти огромную последовательность, а дает возможность “доставать” промежуточные результаты по одному.



Необходимо превратить функцию в генератор при помощи инструкции yield, чтобы вычисления осуществлялись не сразу, а по мере надобности.



Решение



def fib(n):

fib0 = 1

yield fib0

fib1 = 1

yield fib1

for i in range(n - 2):

fib0, fib1 = fib1, fib0 + fib1

yield fib1





# Тест

for num in fib(112121):

pass

print(num)




👉 Пишите свое решение в комментариях👇



@python_job_interview