Задача к ЕГЭ по информатике на тему «две функции» №3

Ниже записаны две рекурсивные функции F  и G  :

F (n) = n, пр и n <= 10

F (n) = F(n%5 )+ 1, при n > 10 и кратном 10  » class=»math» width=»auto»> </p>
<p class= F (n) = n⋅F (n− 1), при n > 10 и не кр атном 10  » class=»math» width=»auto»> </p>
<p class= G (n) = n⋅n + 1⋅n + 3, при n ≥ 21

G (n) = 2⋅G (n − 2)⋅G(n − 4), при четном n, которое м еньш е 21

G (n) = 2⋅G (n − 1)⋅G(n − 3), при неч етном n, которое меньш е 21

Чему равна сумма цифр данного выражения (F (G (F (G(22)))))?

Решение программой:

def f(n):
    if n <= 10:
        return n
    if n % 10 == 0:
        return f(n % 5) + 1

    return n * f(n - 1)

def g(n):
    if n >= 21:
        return n * n + 1 * n + 3
    if n % 2 == 0:
        return 2 * g(n - 2) * g(n - 4)

    return 2 * g(n - 1) * g(n - 3)

print(sum(int(_) for _ in (str(f(g(f(g(22))))))))

Ответ: 681
Оцените статью
Я решу все!