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