17) Алгоритм вычисления функции F(n) задан следующими соотношениями:
F(n) = n + 3 при n < 3
F(n) = (n + 2)·F(n–4), если n ≥ 3 и делится на 3,
F(n) = n + F(n–1) + 2·F(n–2), если n ≥ 3 и не делится на 3.
Чему равно значение функции F(20)?
Здравствуйте, подскажите пожалуйста, как решить данное задание с помощью динамического программирования, с помощью массива. Непонятен вопрос, какой элемент брать в массиве, если индекс равен-1, если подставить n=3, то программа со массивом выводит 25(берет 5*5), а рекурсивная функция берет (5*2), не могу понять откуда 2. Ответ рекурсией сошелся, ответ массивом нет
a=[0,4,5]
print("0,1,2,3")
for n in range(3,21):
if n>=3 and n%3==0:
a.append((n+2)*a[n-4])
if n>=3 and n%3!=0:
a.append(n+a[n-1]+2*a[n-2])
print(a[3],a[4],a[20])
def f(n):
if n<3:
return n+3
if n>=3 and n%3==0:
return (n+2)*f(n-4)
if n>=3 and n%3!=0:
return n+f(n-1)+2*f(n-2)
print(f(0),f(1),f(2),f(3-4))
print(f(3),f(4),f(20))
выводит
0,1,2,3
25 39 1736927
3 4 5 2
10 24 1112057
Весь вопрос в числе 25)