17 / 17 / 5
Регистрация: 13.02.2011
Сообщений: 107
|
|
1 | |
Умная Функция21.04.2011, 20:40. Показов 607. Ответов 3
Метки нет (Все метки)
Есть функция которая в зависимости от входных параметров, делает сложные вычисления, а потом выдаёт результат.
Как можно реализовать, чтобы функция проверяла, запрашивался ли этот ряд входных параметров ранее, и если да то выдавать уже готовый результат, который был вычислен ранее, а если нет, то уже производить вычисления полностью?
0
|
21.04.2011, 20:40 | |
Ответы с готовыми решениями:
3
Умная таблица Умная* печать Умная форма Умная таблица |
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
21.04.2011, 20:46 | 2 |
Возможно, хранить статический список списков входных параметрови и при каждом вызове сверять входной список со всем узлами статического, и при совпадении выдавать вычисленный результат (его в том же списке хранить). Можно даже ассоциативный контейнер заюзать какой-нибудь.
0
|
49 / 49 / 15
Регистрация: 13.08.2010
Сообщений: 160
|
|
21.04.2011, 20:50 | 3 |
в С++ есть такое понятие как static переменная на уровне функции, такая переменная сохраняет свое значение между вызовами функции
чот типо class tmp { public: tmp(int _a, int _b): a(_a), b(_b){} int a; int b; bool operator==(const tmp& x, const tmp& y) { return x.a == y.a && x.b == y.b; } } int f(int a, int b) { static dictionary<tmp, int> d; if(!d.contayns(tmp(a,b)))d.add(tmp(a,b), a+b); return d[tmp(a,b)]; } //не помню как там dictionary в С++ юзается, но суть думаю ясна
2
|
17 / 17 / 5
Регистрация: 13.02.2011
Сообщений: 107
|
|
21.04.2011, 21:06 [ТС] | 4 |
Думаю можно попробовать, я сам об этом думал, но не хотелось бы перебирать этот список параметров прямым перебором, если это массив. А ассоциативный контейнер это хорошая идея, только надо будет с ним еще разобраться по лучше.
+ + [B]2: while(i)k++[B] - Спасибо, буду разбираться!
0
|
21.04.2011, 21:06 | |
21.04.2011, 21:06 | |
Помогаю со студенческими работами здесь
4
Умная изба Умная многопоточность Умная классификация Умная шара Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |