«Числа Фибоначчи снизу вверх» относятся к подходу динамического программирования для эффективного расчета чисел Фибоначчи. Вот несколько способов реализовать это вместе с примерами кода:
Метод 1: использование массива
def fibonacci(n):
if n <= 0:
return 0
dp = [0] * (n + 1)
dp[1] = 1
for i in range(2, n + 1):
dp[i] = dp[i - 1] + dp[i - 2]
return dp[n]
Метод 2: использование двух переменных
def fibonacci(n):
if n <= 0:
return 0
prev = 0
curr = 1
for _ in range(2, n + 1):
prev, curr = curr, prev + curr
return curr
Метод 3. Использование мемоизации
def fibonacci(n, memo={}):
if n <= 0:
return 0
if n in memo:
return memo[n]
if n <= 2:
memo[n] = 1
else:
memo[n] = fibonacci(n - 1, memo) + fibonacci(n - 2, memo)
return memo[n]
Метод 4: использование матричного возведения в степень
import numpy as np
def fibonacci(n):
if n <= 0:
return 0
base = np.array([[1, 1], [1, 0]])
result = np.array([[1, 0]])
for _ in range(2, n + 1):
result = np.matmul(result, base)
return result[0][1]