#include <stdio.h>
int fib1(int n);
int fib2(int n);
int fib3(int n);
int main(void) {
int n;
printf("fib1(%d) = %d\n",n
,fib1
(n
)); printf("fib2(%d) = %d\n",n
,fib2
(n
)); printf("fib3(%d) = %d\n",n
,fib3
(n
));
return 0;
}
int fib1(int n){
int a = 0,b = 1,c;
int i;
if(n == 0){
return 0;
}else if(n == 1){
return 1;
}
for(i = 2;i <= n;i ++){
c = a + b;
a = b;
b = c;
}
return b;
}
int fib2(int n){
int f[n+1];
int i;
f[0] = 0;
if(n == 0){
return f[0];
}
f[1] = 1;
for(i = 2;i <= n;i ++){
f[i] = f[i-1] + f[i-2];
}
return f[n];
}
int fib3(int n){
if(n == 0){
return 0;
}else if(n == 1){
return 1;
}else{
return fib3(n-1) + fib3(n-2);
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgZmliMShpbnQgbik7CmludCBmaWIyKGludCBuKTsKaW50IGZpYjMoaW50IG4pOwoKaW50IG1haW4odm9pZCkgewoJaW50IG47CgkKCXNjYW5mKCIlZCIsJm4pOwoJcHJpbnRmKCJuID0gJWRcbiIsbik7CgkKCXByaW50ZigiZmliMSglZCkgPSAlZFxuIixuLGZpYjEobikpOwoJcHJpbnRmKCJmaWIyKCVkKSA9ICVkXG4iLG4sZmliMihuKSk7CglwcmludGYoImZpYjMoJWQpID0gJWRcbiIsbixmaWIzKG4pKTsKCQoJCglyZXR1cm4gMDsKfQoKaW50IGZpYjEoaW50IG4pewoJaW50IGEgPSAwLGIgPSAxLGM7CglpbnQgaTsKCQoJaWYobiA9PSAwKXsKCQlyZXR1cm4gMDsKCX1lbHNlIGlmKG4gPT0gMSl7CgkJcmV0dXJuIDE7Cgl9CgkKCWZvcihpID0gMjtpIDw9IG47aSArKyl7CgkJYyA9IGEgKyBiOwoJCWEgPSBiOwoJCWIgPSBjOwoJfQoJCglyZXR1cm4gYjsKCQp9CgppbnQgZmliMihpbnQgbil7CglpbnQgZltuKzFdOwoJaW50IGk7CgkKCWZbMF0gPSAwOwoJaWYobiA9PSAwKXsKCQlyZXR1cm4gZlswXTsKCX0KCQoJZlsxXSA9IDE7Cglmb3IoaSA9IDI7aSA8PSBuO2kgKyspewoJCWZbaV0gPSBmW2ktMV0gKyBmW2ktMl07Cgl9CgkKCXJldHVybiBmW25dOwoJCn0KCmludCBmaWIzKGludCBuKXsKCQoJaWYobiA9PSAwKXsKCQlyZXR1cm4gMDsKCX1lbHNlIGlmKG4gPT0gMSl7CgkJcmV0dXJuIDE7Cgl9ZWxzZXsKCQlyZXR1cm4gZmliMyhuLTEpICsgZmliMyhuLTIpOwoJfQp9