Алгоритмы вычисления значения функции и
, где n — целое неотрицательное число, заданы следующими соотношениями:
;
;
, при
, при
;
;
, при
Определите значение
.
Динамическое решение
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