Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [c++] фибоначчи


Автор: zall 28.4.2009, 21:52
Написать 2 функции вычисления n-ого числа фибоначчи (рекурсивную и не рекурсивную) и напечатать таблицу для сравнения времени вычисления i-ого числа.

Код

int fib (int n)      // рекурсия
{
   if (n <= 0) return 0;
   if (n == 1 || n == 2 )  return 1;
   return fib(n-1)+fib(n-2);
};



int fib (int n) // cоответсвенно не рекурсивная
{
   if (n<1) return 0;   

    int f1=1;  
    int f =1;  

for (int i=3; i<=n; ++i )
{
     int f0 =f; 
     f += f1;   
     f1 = f0;   
};
return f;

}


проблема в вычислении времени и ещё гляньте не напортачил ли я в самих функциях
P.S. в поиске искал всё хорошо вот только вычисления и сравнения времени нету.
P.P.S надо на borland C поотму что в институте вижуала нету

Автор: zim22 29.4.2009, 06:58
user posted image
Полученное в результате число округлите до ближайшего целого.

Автор: zall 29.4.2009, 14:21
я что то не понял что к чему тут можно пожалуйста в виде кода

Автор: andrew_121 29.4.2009, 14:38
zall, Можно. Пиши в ПМ, договоримся о цене.

Автор: Dmi3ev 29.4.2009, 15:32
1) zall, да все нормально с твоими функциями.
2) для того, чтобы сравнить их по времени выполнения можно тупо посмотреть время, выполнить одну из функций, снова посмотреть время, а потом вычислить разность - это и будет время выполнения функции примерно... также поступить с другой... я думаю для лабы вполне потянет... 
+ поищи на форуме, как сделать так, чтобы можно было с миллисекундами работать

Автор: zall 29.4.2009, 16:38
поискал, и в интернете поискал единствнное что я нашёл так это time.h   clock() но только кажется это немного не то, нужно чтобы считалось время выполнения одной функции другой функции и потом просто выводилось. И кстати как точно подметил dmi3ev время нужно в милисекундах

Автор: zim22 29.4.2009, 20:26
Цитата(zall @  29.4.2009,  14:21 Найти цитируемый пост)
я что то не понял что к чему тут можно пожалуйста в виде кода

Код

int Fn = 100; // вычисляем сотое число
double result = pow(1.61803, Fn) / sqrt(5);

Автор: Silent 30.4.2009, 10:31
Для замеров времени используй GetTickCount();

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)