Computer Science/Algorithm

Compare RecursiveP with DynamicP

재오니소스 2017. 12. 16. 19:05

/*

https://jaeonysos.tistory.com

Compare RecursiveP with DynamicP

Writer : Mun Jae In

Date : 2017.12.16

*/

#include <stdio.h>

#include <time.h>


long long Fibonacci_dynamic(int n);

long long Fibonacci_recur(int n);


long long m[40]={0};


int main(int argc, char * argv[])

{

clock_t t1,t2;

int n;

m[1] = 1;

m[2] = 2;

for(n=20 ; n<=40; n++){

t1 = clock();

printf("Fib(%d) = %lld \n",n,Fibonacci_dynamic(n));

t1 = clock() - t1;

printf("Dynamic 수행시간 : %f seconds.\n\n",((float)t1)/CLOCKS_PER_SEC);

t2 = clock();

printf("Fib(%d) = %lld \n",n,Fibonacci_recur(n));

t2 = clock() - t2;

printf("Recursive 수행시간 : %f seconds.\n\n",((float)t2)/CLOCKS_PER_SEC);

}

return 0;

}


long long Fibonacci_dynamic(int n)

{

if(n<0)

return 0;

if(m[n] == 0)

{

m[n] = Fibonacci_dynamic(n-1) + Fibonacci_dynamic(n-2);

}

return m[n];

}


long long Fibonacci_recur(int n)

{

if(n==1)

return 1;

else if(n==2)

return 2;

else return Fibonacci_recur(n-1) + Fibonacci_recur(n-2);

}