Показать сообщение отдельно
Старый 06.10.2018, 19:11   #1 (permalink)
alexandor
Новичок
 
Регистрация: 06.10.2018
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Задача на рекуррентность

Помогите, пожалуйста с программой на С.
Во вложении описана данная функция. Нужно написать программу, которая принимает два аргумента и выводит значение функции.проблема в том, что программа работает медленно, и у меня проблема с пониманием как правильно использовать мемоизацию. то есть если значение не было посчитано раннее, нужно вычислять. На вводе программа будет запрашивать два числа ( 1<=n>=50 и i >=0). Пример ввода и вывода во вложении. Спасибо заранеею


int fm[50];

int F(int n, int i){
int f;
int fsum=0;
if (fm[f]==0){
if(i < n){
return i;
}else{
for(int j = 1; j <= n; j++){
f = j * F(n, i-j);
if(j%2==0){
f=-f;
}
fsum+=f;
fm[n]=fsum;

}}}
return fm[n];

}
Изображения
   
alexandor вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070