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