|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.10.2018, 23:34 | #1 |
Регистрация: 12.09.2018
Сообщений: 4
|
задача на рекуррентность
Во вложении описана данная функция. Нужно написать программу, которая принимает два аргумента и выводит значение функции.Проблема в том, что программа работает медленно, и у меня проблема с пониманием как правильно использовать мемоизацию.
int fm[50]; int power(int base, int exponent){ int result = 1; while (exponent > 0){ if(exponent%2!=0){ result = (result*base); } exponent/=2; base = (base*base); } return result; } int F(int n, int i){ int f; int fsum=0; if (fm[f]!=0){ return fm[f]; } if(i < n){ return i; }else{ for(int j = 1; j <= n; j++){ f = power(-1, (j+1)) * j * F(n, i-j); fsum+=f; fm[n]=fsum; }} return fm[n]; } int main(int argc, char *argv[]){ int n, k; scanf("%d %d", &n, &k); printf("%d\n",F(n, k)); return 0; } |
06.10.2018, 00:28 | #2 |
Форумчанин
Регистрация: 24.01.2011
Сообщений: 774
|
Никогда не пишите так.
Код:
Код:
Так как мы вычисляем значения F как сумму меньших элементов, мы можем вычислять с меньших значений функции до верхних. Код:
a.k.a. Angelicos Phosphoros
Мой сайт |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рекуррентность | Olaa | Помощь студентам | 1 | 10.04.2017 14:20 |
Задача по подсчёту статистики использования букв. Другая задача - по длинной арифметике Pascal ABC | kimberly | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 24.12.2012 17:03 |
Задача на оптимальный расчет маршрута (задача в презентации) в табличном процессоре Excel | Toofed | Помощь студентам | 0 | 30.11.2011 01:12 |
Задача минимизации дисбаланса на линии сборки (задача минимакса) | LenZab | Microsoft Office Excel | 13 | 13.03.2011 22:51 |