Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2010, 21:53   #1
KOPC1886
Пользователь
 
Регистрация: 28.10.2010
Сообщений: 26
Вопрос Кэш. Функции.

Многократно вызываемая функция может запоминать результаты последнего вычисления и если то что требуется она уже делала - то не пересчитывать еще раз, а выдать из ранее посчитанного?
Это означает кэширование в программировании? Мне просто надо сделать задачу о числах Фибоначи через функцию с кэшированием.
Можете привести пример таких функций?
Как сделать числа Фибоначи рекурсивно я знаю, а вот с этим кэшированием не понимаю.
Приведите, пожалуйста, примеры таких функций и, если можно с объяснением. СПАСИБО!
KOPC1886 вне форума Ответить с цитированием
Старый 25.12.2010, 21:59   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Объяви массив, забей его нулями. При вызове функции подсчета i-го числа фибоначчи проверь:
если массив[i]=0 - посчитать число, записать его в массив[i];
иначе вернуть массив[i].
Это и будет кеширование
Son Of Pain вне форума Ответить с цитированием
Старый 25.12.2010, 23:36   #3
KOPC1886
Пользователь
 
Регистрация: 28.10.2010
Сообщений: 26
По умолчанию Кэш. Функции.

А объявлять массив в функции или в int main()?
KOPC1886 вне форума Ответить с цитированием
Старый 25.12.2010, 23:51   #4
KOPC1886
Пользователь
 
Регистрация: 28.10.2010
Сообщений: 26
По умолчанию

Я вроде написал, можете проверить или если что подкорректировать. СПАСИБО!

#include "stdafx.h"
#include <iostream>
using namespace std;

int fib(int n)
{

int kash[80];
for (int i=1;i<=n;i++)
{
kash[i]=0;
}
if (kash[n]==0)
{ if (n==1 || n==2)
{
kash[n]=1;
return n;
}
else
kash[n]=fib(n-1)+fib(n-2);
}


return kash[n];

}

int _tmain(int argc, _TCHAR* argv[])
{

int n=58;
cout <<fib(n)<<endl;


return 0;
}
KOPC1886 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать кэш-функцию andrey4623 Общие вопросы Delphi 6 01.04.2011 11:59
Сокет и кэш Golovastik Операционные системы общие вопросы 1 13.07.2010 08:10
Кэш C# IICuX123 Фриланс 11 21.07.2009 14:09
idhttp и кэш Joe_Tribbiani Работа с сетью в Delphi 2 17.06.2009 09:32
Кэш драйвера ODBC Henry Общие вопросы C/C++ 3 07.08.2008 05:48