Помогите, пожалуйста с программой на С.
Во вложении описана данная функция. Нужно написать программу, которая принимает два аргумента и выводит значение функции.проблема в том, что программа работает медленно, и у меня проблема с пониманием как правильно использовать мемоизацию. то есть если значение не было посчитано раннее, нужно вычислять. На вводе программа будет запрашивать два числа ( 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];
}