// ideoneでは正常に作動しなかったため、online GDPを用いて実験しました。
// 結果は、再帰を用いた方が短い時間で求めることができました。
// また、実行回数が少ないと、ほとんど差がなく、用いない方が早いこともあると気づきました。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int saiki(int n){
if(n<2){
return 1;
}
return saiki(n-1)+saiki(n-2);
}
int fun(int n){
int i;
int a[n+1];
for(i=0;i<=n;i++){
if(i<2){
a[i]=1;
} else {
a[i]=a[i-1]+a[i-2];
}
}
return a[n];
}
int main(void) {
clock_t ti[40];
int i;
double sum;
for(i=0;i<40;i++){
sum=sum+ti[i]-ti[i-1];
printf("fun(%d)=%d、時間=%d 時間差=%d\n",i
,saiki
(i
),ti
[i
],ti
[i
]-ti
[i
-1]); if(i<=1) sum=0;
}
for(i=0;i<40;i++){
sum=sum+ti[i]-ti[i-1];
printf("saiki(%d)=%d、時間=%d 時間差=%d\n",i
,fun
(i
),ti
[i
],ti
[i
]-ti
[i
-1]); if(i<=1) sum=0;
}
return 0;
}
Ly8gaWRlb25l44Gn44Gv5q2j5bi444Gr5L2c5YuV44GX44Gq44GL44Gj44Gf44Gf44KB44CBb25saW5lIEdEUOOCkueUqOOBhOOBpuWun+mok+OBl+OBvuOBl+OBn+OAggovLyDntZDmnpzjga/jgIHlho3luLDjgpLnlKjjgYTjgZ/mlrnjgYznn63jgYTmmYLplpPjgafmsYLjgoHjgovjgZPjgajjgYzjgafjgY3jgb7jgZfjgZ/jgIIKLy8g44G+44Gf44CB5a6f6KGM5Zue5pWw44GM5bCR44Gq44GE44Go44CB44G744Go44KT44Gp5beu44GM44Gq44GP44CB55So44GE44Gq44GE5pa544GM5pep44GE44GT44Go44KC44GC44KL44Go5rCX44Gl44GN44G+44GX44Gf44CCCgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHRpbWUuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKCmludCBzYWlraShpbnQgbil7CglpZihuPDIpewoJCXJldHVybiAxOwoJfQoJcmV0dXJuIHNhaWtpKG4tMSkrc2Fpa2kobi0yKTsKfQoKaW50IGZ1bihpbnQgbil7CglpbnQgaTsKCWludCBhW24rMV07Cglmb3IoaT0wO2k8PW47aSsrKXsKCWlmKGk8Mil7CgkJYVtpXT0xOwoJfSBlbHNlIHsKCQlhW2ldPWFbaS0xXSthW2ktMl07Cgl9Cgl9CglyZXR1cm4gYVtuXTsKfQoKaW50IG1haW4odm9pZCkgewoJY2xvY2tfdCB0aVs0MF07CglpbnQgaTsKCWRvdWJsZSBzdW07Cglmb3IoaT0wO2k8NDA7aSsrKXsKCQl0aVtpXSA9IGNsb2NrKCk7CgkJc3VtPXN1bSt0aVtpXS10aVtpLTFdOwoJCXByaW50ZigiZnVuKCVkKT0lZOOAgeaZgumWkz0lZCDmmYLplpPlt649JWRcbiIsaSxzYWlraShpKSx0aVtpXSx0aVtpXS10aVtpLTFdKTsKCQlpZihpPD0xKSBzdW09MDsKCX0KCXByaW50ZigiYXZlPSVmXG4iLHN1bS8zOCk7Cglmb3IoaT0wO2k8NDA7aSsrKXsKCQl0aVtpXSA9IGNsb2NrKCk7CgkJc3VtPXN1bSt0aVtpXS10aVtpLTFdOwoJCXByaW50Zigic2Fpa2koJWQpPSVk44CB5pmC6ZaTPSVkIOaZgumWk+W3rj0lZFxuIixpLGZ1bihpKSx0aVtpXSx0aVtpXS10aVtpLTFdKTsKCQlpZihpPD0xKSBzdW09MDsKCX0KCXByaW50ZigiYXZlPSVmXG4iLHN1bS8zOCk7CglyZXR1cm4gMDsKfQ==