Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:
F(n) = 2 × n × F(n-1), если n > 1.
Решение:
|
from functools import lru_cache @lru_cache(None) def f(n): if n==1: return 1 if n>1: return 2*n*f(n-1) for i in range(1, 2025): f(i) print((f(2024)//16 - f(2023))/f(2022)) |
Пояснение кода
- Импортируется декоратор
lru_cache
из модуля functools
для кэширования результатов вычислений функции f
.
- Определяется рекурсивная функция
f
с использованием декоратора @lru_cache(None)
, который кэширует результаты для всех входных значений.
- Если
n
равно 1, функция возвращает 1.
- Если
n
больше 1, функция возвращает 2 * n * f(n - 1)
, рекурсивно вычисляя значение функции.
- Цикл
for
используется для вычисления значений функции f
для всех значений от 1 до 2024 включительно. Это обеспечивает заполнение кэша для всех необходимых значений.
- Результат вычисляется и выводится с использованием выражения
(f(2024) // 16 - f(2023)) / f(2022)
.
Ответ: 1019592