Все задачи №16
№16

Две функции

Алгоритм вычисления функций F(n) и G(n) задан соотношениями: F(n) = 3 · (G(n − 2) + 5); G(n) = 2 · n, если n < 10; G(n) = G(n − 4) + 1, если n ≥ 10. Чему равно значение F(200)?

Учебная задача

Ответвпиши то, что вывела программа
Показать разбор
  1. Перепиши обе функции из условия.
  2. F считается через G, поэтому главная работа идёт в G: она спускается с шагом 4 до значений меньше 10.
  3. Поставь @lru_cache(None) на обе функции, так надёжнее.
  4. Напечатай F(200).
from functools import lru_cache

@lru_cache(None)
def F(n):
    return 3 * (G(n - 2) + 5)

@lru_cache(None)
def G(n):
    if n < 10:
        return 2 * n
    if n >= 10:
        return G(n - 4) + 1

print(F(200))