Алгоритм вычисления значения функции , где
— целое неотрицательное число, задан следующими соотношениями:
,
,
,при
Чему будет равно значение, вычисленное при выполнении вызова
?
Решение динамикой:
f = [0] * 1000
for n in range(1, 1000):
if n == 1:
f[n] = 0
if n == 2:
f[n] = 1
if n == 3:
f[n] = 1
if n > 3:
f[n] = f[n - 1] + n * n + f[n - 2]
print(f[19])
Решение рекурсией:
def F(n):
if n == 1:
return 0
if n == 2 or n == 3:
return 1
if n > 3:
return F(n - 1) + n ** 2 + F(n - 2)
print(F(19))
Ответ: 94599