Ряд Фибоначчи через серийный код

Мне интересно знать, какое фактическое время выполнения требуется для выполнения следующего последовательного кода Фибоначчи при вводе n = 40 ???

#include<stdio.h>

void printFibonacci(int);

int main(){

int k,n;
long int i=0,j=1,f;

printf("Enter the range of the Fibonacci series: ");
scanf("%d",&n);

printf("Fibonacci Series: ");
printf("%d %d ",0,1);
printFibonacci(n);

return 0;
}

void printFibonacci(int n){

static long int first=0,second=1,sum;

if(n>0){
sum = first + second;
first = second;
second = sum;
printf("%ld ",sum);
printFibonacci(n-1);
}

}

1

Решение

В Linux вы можете измерить время выполнения программы командой time:

В Windows вы можете скачать «timer.exe» из Windows Resource Kit или воспользоваться одним из следующих «приемов»:

0

Другие решения

Использование команды time здесь не будет хорошо работать, поскольку она будет включать время ввода пользователя, а не сам алгоритм.

В Windows я бы использовал комбинацию QueryPerformanceFrequency и QueryPerformanceCounter.

#include <windows.h>

__int64 before, after, freq;
QueryPerformanceFrequency((LARGE_INTEGER *)&freq);
QueryPerformanceCounter((LARGE_INTEGER *)&before);

printFibonacci(n);

QueryPerformanceCounter((LARGE_INTEGER *)&after);

int elapsedMs = ((after - before) * 1000) / freq;

printf("Time taken: %dms\n", elapsedMs);

Linux предоставляет другой набор функций:

#include <time.h>

int clock_getres(clockid_t clock_id, struct timespec *res);
int clock_gettime(clockid_t clock_id, struct timespec *tp);
int clock_settime(clockid_t clock_id, const struct timespec *tp);

Вот пример того, как их использовать: http://www.qnx.com/developers/docs/6.5.0/index.jsp?topic=/com.qnx.doc.neutrino_lib_ref/c/clock_getres.html

0

По вопросам рекламы [email protected]