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

Алгоритмы вычисления значения функции F(n)  и G (n)  , где n — целое неотрицательное число, заданы следующими соотношениями:

F (0) = 2  ;

F (1) = 5  ;

F (n) = F(n − 1) ∗F(n − 2)  , при n > 1  » class=»math» width=»auto»>; </p>
<p class= G (n) = 0  , при n < 5  ;

G (5) = 1  ;

G (n) = G(n − 1) + F(n− 2)  , при n > 5  » class=»math» width=»auto»>. </p>
<p class= Определите значение F (5)+ G(8)  .

Динамическое решение

f = [0] * 10
g = [0] * 10

# Заполняем известные значения
f[0] = 2
f[1] = 5
g[5] = 1
# Делаем перебор по возрастанию,
# так как нужно обращаться к (n-1) и (n-2),
# значения которых должны быть посчитаны заранее
for n in range(10):
    if n > 1:
        f[n] = f[n - 1] * f[n - 2]
    if n < 5:
        g[n] = 0
    if n > 5:
        g[n] = g[n - 1] + f[n - 2]

print(f[5] + g[8])

Рекурсивное решение

def f(n):
    if n == 0:
        return 2
    if n == 1:
        return 5
    return f(n - 1) * f(n - 2)

def g(n):
    if n < 5:
        return 0
    if n == 5:
        return 1
    return g(n - 1) + f(n - 2)

print(f(5) + g(8))

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