fork download
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <stdlib.h>
  4.  
  5. int sfibo(int n){
  6. int s;
  7. if(n<=1){
  8. return 1;
  9. }
  10. else{
  11. s=sfibo(n-1)+sfibo(n-2);
  12. }
  13. return s;
  14. }
  15.  
  16. int nsfibo(int n){
  17. int i,s0=1,s1=1,s=0;
  18. if(n==0||n==1){
  19. return 1;
  20. }
  21. for(i=2;i<=n;i++){
  22. s=s0+s1;
  23. s1=s0;
  24. s0=s;
  25.  
  26. }
  27. return s;
  28.  
  29. }
  30.  
  31.  
  32. int main(void) {
  33. clock_t ti[4];
  34. ti[0]=clock();
  35. sfibo(40);
  36. ti[1]=clock();
  37. printf("再帰を使ったfibo(40)の時間=%ld\n",ti[1]-ti[0]);
  38.  
  39. ti[2]=clock();
  40. nsfibo(40);
  41. ti[3]=clock();
  42. printf("再帰を使っってないfibo(40)の時間=%ld\n", ti[3]-ti[2]);
  43. printf("よって再起を使わない方が早い");
  44. return 0;
  45. }
  46.  
Success #stdin #stdout 0.83s 5320KB
stdin
Standard input is empty
stdout
再帰を使ったfibo(40)の時間=820437
再帰を使っってないfibo(40)の時間=0
よって再起を使わない方が早い