fork download
  1. // ideoneでは正常に作動しなかったため、online GDPを用いて実験しました。
  2. // 結果は、再帰を用いた方が短い時間で求めることができました。
  3. // また、実行回数が少ないと、ほとんど差がなく、用いない方が早いこともあると気づきました。
  4.  
  5. #include <stdio.h>
  6. #include <time.h>
  7. #include <stdlib.h>
  8.  
  9.  
  10. int saiki(int n){
  11. if(n<2){
  12. return 1;
  13. }
  14. return saiki(n-1)+saiki(n-2);
  15. }
  16.  
  17. int fun(int n){
  18. int i;
  19. int a[n+1];
  20. for(i=0;i<=n;i++){
  21. if(i<2){
  22. a[i]=1;
  23. } else {
  24. a[i]=a[i-1]+a[i-2];
  25. }
  26. }
  27. return a[n];
  28. }
  29.  
  30. int main(void) {
  31. clock_t ti[40];
  32. int i;
  33. double sum;
  34. for(i=0;i<40;i++){
  35. ti[i] = clock();
  36. sum=sum+ti[i]-ti[i-1];
  37. printf("fun(%d)=%d、時間=%d 時間差=%d\n",i,saiki(i),ti[i],ti[i]-ti[i-1]);
  38. if(i<=1) sum=0;
  39. }
  40. printf("ave=%f\n",sum/38);
  41. for(i=0;i<40;i++){
  42. ti[i] = clock();
  43. sum=sum+ti[i]-ti[i-1];
  44. printf("saiki(%d)=%d、時間=%d 時間差=%d\n",i,fun(i),ti[i],ti[i]-ti[i-1]);
  45. if(i<=1) sum=0;
  46. }
  47. printf("ave=%f\n",sum/38);
  48. return 0;
  49. }
Success #stdin #stdout 0.53s 5324KB
stdin
Standard input is empty
stdout
fun(0)=1、時間=3101 時間差=3101
fun(1)=1、時間=3101 時間差=0
fun(2)=2、時間=3101 時間差=0
fun(3)=3、時間=3101 時間差=0
fun(4)=5、時間=3101 時間差=0
fun(5)=8、時間=3101 時間差=0
fun(6)=13、時間=3101 時間差=0
fun(7)=21、時間=3101 時間差=0
fun(8)=34、時間=3101 時間差=0
fun(9)=55、時間=3101 時間差=0
fun(10)=89、時間=3101 時間差=0
fun(11)=144、時間=3101 時間差=0
fun(12)=233、時間=3101 時間差=0
fun(13)=377、時間=3101 時間差=0
fun(14)=610、時間=3101 時間差=0
fun(15)=987、時間=3101 時間差=0
fun(16)=1597、時間=3101 時間差=0
fun(17)=2584、時間=3101 時間差=0
fun(18)=4181、時間=3101 時間差=0
fun(19)=6765、時間=3101 時間差=0
fun(20)=10946、時間=3101 時間差=0
fun(21)=17711、時間=3101 時間差=0
fun(22)=28657、時間=3101 時間差=0
fun(23)=46368、時間=3101 時間差=0
fun(24)=75025、時間=3101 時間差=0
fun(25)=121393、時間=3101 時間差=0
fun(26)=196418、時間=4151 時間差=1050
fun(27)=317811、時間=4151 時間差=0
fun(28)=514229、時間=4151 時間差=0
fun(29)=832040、時間=5201 時間差=1050
fun(30)=1346269、時間=7301 時間差=2100
fun(31)=2178309、時間=9402 時間差=2101
fun(32)=3524578、時間=13603 時間差=4201
fun(33)=5702887、時間=19912 時間差=6309
fun(34)=9227465、時間=30388 時間差=10476
fun(35)=14930352、時間=47804 時間差=17416
fun(36)=24157817、時間=76580 時間差=28776
fun(37)=39088169、時間=128021 時間差=51441
fun(38)=63245986、時間=199454 時間差=71433
fun(39)=102334155、時間=336016 時間差=136562
ave=8760.921053
saiki(0)=1、時間=532440 時間差=532440
saiki(1)=1、時間=532440 時間差=0
saiki(2)=2、時間=532440 時間差=0
saiki(3)=3、時間=532440 時間差=0
saiki(4)=5、時間=532440 時間差=0
saiki(5)=8、時間=532440 時間差=0
saiki(6)=13、時間=532440 時間差=0
saiki(7)=21、時間=532440 時間差=0
saiki(8)=34、時間=532440 時間差=0
saiki(9)=55、時間=532440 時間差=0
saiki(10)=89、時間=532440 時間差=0
saiki(11)=144、時間=532440 時間差=0
saiki(12)=233、時間=532440 時間差=0
saiki(13)=377、時間=532440 時間差=0
saiki(14)=610、時間=532440 時間差=0
saiki(15)=987、時間=532440 時間差=0
saiki(16)=1597、時間=532440 時間差=0
saiki(17)=2584、時間=532440 時間差=0
saiki(18)=4181、時間=532440 時間差=0
saiki(19)=6765、時間=532440 時間差=0
saiki(20)=10946、時間=532440 時間差=0
saiki(21)=17711、時間=532440 時間差=0
saiki(22)=28657、時間=532440 時間差=0
saiki(23)=46368、時間=532440 時間差=0
saiki(24)=75025、時間=532440 時間差=0
saiki(25)=121393、時間=532440 時間差=0
saiki(26)=196418、時間=532440 時間差=0
saiki(27)=317811、時間=532440 時間差=0
saiki(28)=514229、時間=532440 時間差=0
saiki(29)=832040、時間=532440 時間差=0
saiki(30)=1346269、時間=532440 時間差=0
saiki(31)=2178309、時間=532440 時間差=0
saiki(32)=3524578、時間=532440 時間差=0
saiki(33)=5702887、時間=532440 時間差=0
saiki(34)=9227465、時間=532440 時間差=0
saiki(35)=14930352、時間=532440 時間差=0
saiki(36)=24157817、時間=532440 時間差=0
saiki(37)=39088169、時間=532440 時間差=0
saiki(38)=63245986、時間=532440 時間差=0
saiki(39)=102334155、時間=532440 時間差=0
ave=0.000000