fork download
  1. #include <stdio.h>//第1講演習 5
  2. #include <time.h>
  3. #include <stdlib.h>
  4.  
  5. int fibosaiki(int n){
  6. if(n<=1) return 1;
  7. else{
  8. return fibosaiki(n-1)+fibosaiki(n-2);
  9. }
  10. }
  11. int fibo(int n){
  12. int i,a,b,f;
  13. if(n<=1)return 1;
  14. else{
  15. for(i=2,a=1,b=1;i<=n;i++){
  16. f=a+b;
  17. b=a;
  18. a=f;
  19. }
  20. return f;
  21. }
  22. }
  23. int main() {
  24. int x,y,n;
  25. clock_t ti[3];
  26. n=41;
  27. ti[0]=clock();//1回目時刻
  28. x=fibosaiki(n);//再帰あり
  29. ti[1]=clock();//2回目時刻
  30. y=fibo(n);//再帰なし
  31. ti[2]=clock();//3回目時刻
  32. printf("再帰フィボナッチ(%d)=%d,時間=%d\n",n,x,ti[1]-ti[0]);
  33. printf("再帰なしフィボナッチ(%d)=%d,時間=%d\n",n,y,ti[2]-ti[1]);
  34.  
  35. printf("1回目時刻=%d\n2回目時刻=%d\n3回目時刻=%d\n",ti[0],ti[1],ti[2]);
  36. //再帰なしの方が短時間で結果を求められる
  37. //nが小さいと時間が0になるのでn=40ぐらいが差を見つけられる
  38. return 0;
  39. }
Success #stdin #stdout 0.53s 5320KB
stdin
Standard input is empty
stdout
再帰フィボナッチ(41)=267914296,時間=526072
再帰なしフィボナッチ(41)=267914296,時間=0
1回目時刻=3873
2回目時刻=529945
3回目時刻=529945