Ваш метод вычисления первых 35 чисел в последовательности Фибоначчи чрезвычайно неэффективен. Вы запускаете функцию fib () 35 раз, и каждый раз, когда fib () имеет экспоненциальное время выполнения. Генератор в Python является идеальным решением этой проблемы и гораздо более эффективен, чем то, что вы написали в Ruby.
def fibo_generator(n):
# gets Fibonacci numbers up to nth number using a generator
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
Затем вы можете распечатать все числа Фибоначчи до 35, используя этот код:
for f in fibo_generator(35):
print f
Это, безусловно, самый эффективный способ реализации последовательности Фибоначчи в Python, а также самый универсальный.