#include <stdio.h>//第1講演習 5
#include <time.h>
#include <stdlib.h>
int fibosaiki(int n){
if(n<=1) return 1;
else{
return fibosaiki(n-1)+fibosaiki(n-2);
}
}
int fibo(int n){
int i,a,b,f;
if(n<=1)return 1;
else{
for(i=2,a=1,b=1;i<=n;i++){
f=a+b;
b=a;
a=f;
}
return f;
}
}
int main() {
int x,y,n;
clock_t ti[3];
n=41;
x=fibosaiki(n);//再帰あり
y=fibo(n);//再帰なし
printf("再帰フィボナッチ(%d)=%d,時間=%d\n",n
,x
,ti
[1]-ti
[0]); printf("再帰なしフィボナッチ(%d)=%d,時間=%d\n",n
,y
,ti
[2]-ti
[1]);
printf("1回目時刻=%d\n2回目時刻=%d\n3回目時刻=%d\n",ti
[0],ti
[1],ti
[2]); //再帰なしの方が短時間で結果を求められる
//nが小さいと時間が0になるのでn=40ぐらいが差を見つけられる
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Ly/nrKwx6Kyb5ryU57+SIDUKI2luY2x1ZGUgPHRpbWUuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKaW50IGZpYm9zYWlraShpbnQgbil7CglpZihuPD0xKSByZXR1cm4gMTsKCWVsc2V7CgkJcmV0dXJuIGZpYm9zYWlraShuLTEpK2ZpYm9zYWlraShuLTIpOwoJfQp9CmludCBmaWJvKGludCBuKXsKCWludCBpLGEsYixmOwoJaWYobjw9MSlyZXR1cm4gMTsKCWVsc2V7CgkJZm9yKGk9MixhPTEsYj0xO2k8PW47aSsrKXsKCQkJZj1hK2I7CgkJCWI9YTsKCQkJYT1mOwoJCX0KCQlyZXR1cm4gZjsKCX0KfQppbnQgbWFpbigpIHsKCWludCB4LHksbjsKCWNsb2NrX3QgdGlbM107CgluPTQxOwoJdGlbMF09Y2xvY2soKTsvLzHlm57nm67mmYLliLsKCXg9Zmlib3NhaWtpKG4pOy8v5YaN5biw44GC44KKCgl0aVsxXT1jbG9jaygpOy8vMuWbnuebruaZguWIuwoJeT1maWJvKG4pOy8v5YaN5biw44Gq44GXCgl0aVsyXT1jbG9jaygpOy8vM+WbnuebruaZguWIuwoJcHJpbnRmKCLlho3luLDjg5XjgqPjg5zjg4rjg4Pjg4EoJWQpPSVkLOaZgumWk++8nSVkXG4iLG4seCx0aVsxXS10aVswXSk7CglwcmludGYoIuWGjeW4sOOBquOBl+ODleOCo+ODnOODiuODg+ODgSglZCk9JWQs5pmC6ZaT77ydJWRcbiIsbix5LHRpWzJdLXRpWzFdKTsKCQoJcHJpbnRmKCIx5Zue55uu5pmC5Yi777ydJWRcbjLlm57nm67mmYLliLvvvJ0lZFxuM+WbnuebruaZguWIu++8nSVkXG4iLHRpWzBdLHRpWzFdLHRpWzJdKTsKCS8v5YaN5biw44Gq44GX44Gu5pa544GM55+t5pmC6ZaT44Gn57WQ5p6c44KS5rGC44KB44KJ44KM44KLCgkvL++9juOBjOWwj+OBleOBhOOBqOaZgumWk+OBjDDjgavjgarjgovjga7jgaduPTQw44GQ44KJ44GE44GM5beu44KS6KaL44Gk44GR44KJ44KM44KLCglyZXR1cm4gMDsKfQ==