7-2 求满足条件的斐波那契数 (30分)
斐波那契数,亦称之为斐波那契数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……,这个数列从第3项开始,每一项都等于前两项之和。求大于输入数的最小斐波那契数。
输入格式:
在一行输人一个正整数n(n>=10)。
输出格式:
在一行输出大于n的最小斐波那契数。
输入样例:
在这里给出一组输入。例如:
10
输出样例:
在这里给出相应的输出。例如:
13
非递归实现斐波那契数列:
#include<stdio.h>
int fib(int n);
int main(){
int i,n;
scanf("%d",&n);
for(i=1;;i++){
if(fib(i)>n){
printf("%d",fib(i));
break;
}
}
return 0;
}
int fib(int n){
int x,i,f1=1,f2=1;
if(n<=2){
x=1;
}else{
for(i=3;i<=n;i++){
x=f1+f2;
f1=f2;
f2=x;
}
}
return x;
}
递归实现斐波那契数列:
#include<stdio.h>
int fib(int n);
int main(){
int i,n;
scanf("%d",&n);
for(i=1;;i++){
if(fib(i)>n){
printf("%d",fib(i));
break;
}
}
return 0;
}
int fib(int n){
if(n<=2){
return 1;
}else{
return fib(n-1)+fib(n-2);
}
}