Задание №16 — Рекурсия
#69452Задание №16ФИПИ
Рекурсия
Алгоритм вычисления значения функции F(n), где n — натуральное число, задан следующими соотношениями:
F(n) = 1 при n = 1;
F(n) = 1 при n = 2;
если n > 2 и при этом если n чётно;
если n > 2 и при этом n нечётно.
Чему равно значение функции F(43)?
Правильный ответ
1450
Пояснение
Решение:
Число 43 нечётное, поэтому работает правило : аргумент уменьшается на 2 и остаётся нечётным. Значит вся цепочка идёт только по нечётным числам, вплоть до , а правило для чётных не используется.
В сумме ровно 21 слагаемое, её значение равно .
Итого .
from functools import lru_cache
@lru_cache(None)
def F(n):
if n <= 2:
return 1
if n % 2 == 0:
return 2 + F(n - 1)
return 3 * n + F(n - 2)
print(F(43)) # 1450Ответ: 1450