«Цикл Фибоначчи по циклу for» — это просьба объяснить различные методы генерации чисел Фибоначчи с использованием цикла for. Вот несколько подходов:
Метод 1: базовая итерация
def fibonacci(n):
if n <= 0:
return []
elif n == 1:
return [0]
elif n == 2:
return [0, 1]
else:
fib_sequence = [0, 1]
for i in range(2, n):
fib_sequence.append(fib_sequence[i-1] + fib_sequence[i-2])
return fib_sequence
Метод 2: оптимизированная итерация с переменными
def fibonacci(n):
if n <= 0:
return []
elif n == 1:
return [0]
elif n == 2:
return [0, 1]
else:
fib_sequence = [0, 1]
a, b = 0, 1
for _ in range(2, n):
a, b = b, a + b
fib_sequence.append(b)
return fib_sequence
Метод 3: итерация с генератором
def fibonacci(n):
if n <= 0:
return []
elif n == 1:
return [0]
elif n == 2:
return [0, 1]
else:
a, b = 0, 1
yield a
yield b
for _ in range(2, n):
a, b = b, a + b
yield b
Метод 4: итерация с мемоизацией (кэшированием)
def fibonacci(n):
if n <= 0:
return []
elif n == 1:
return [0]
elif n == 2:
return [0, 1]
else:
fib_sequence = [0, 1]
memo = {0: 0, 1: 1}
for i in range(2, n):
if i in memo:
fib_sequence.append(memo[i])
else:
fib_sequence.append(fib_sequence[i-1] + fib_sequence[i-2])
memo[i] = fib_sequence[i]
return fib_sequence