从键盘输入一个整数,输出距离该数最近的斐波那契(Fibonacci)数。
根据输入的数不同,此问题可能有一个答案(或者比输入的数大或者比输入的数小),
也可能需要输出两个值(一个比输入的数大,一个比输入的数小,两个距离输入的数一样近)。
如果输入的数是 斐波那契数本身,则它就是问题解,输出即可。
1,1,2,3,5,8,13,21,34,……这是斐波那契(Fibonacci)数列的前几项。斐波那契数列的特点:前两项均为1,后面每一项都是其前面两项之和。
【输入形式】输入一个正整数n
【输出形式】离n最近的斐波那契(Fibonacci)数
【样例输入1】Input n:72
【样例输出1】55 89
【样例输入2】Input n:2
【样例输出2】2
【样例说明】若输出两个数,则以一个空格分隔输出的两个数
#include <stdio.h>
int fibo(int x)
{
if(x==1||x==2)
return 1;
return fibo(x-1)+fibo(x-2);
}
int main()
{
int i=1,result,n,big,small,a,b;
scanf("%d",&n);
while(i++)
{
result=fibo(i);
if(n>result)
small=result;
else
{
big=result;
break;
}
}
a=big-n;
b=n-small;
if(a==b)
printf("%d %d",small,big);
else
printf("%d",a>b?small:big);
return 0;
}