211
社区成员
发帖
与我相关
我的任务
分享
L2-3【例4-9】 求满足条件的斐波那契数
分数 20
全屏浏览题目
切换布局
作者 陈春晖
单位 浙江大学
斐波那契数,亦称之为斐波那契数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……,这个数列从第3项开始,每一项都等于前两项之和。求大于输入数的最小斐波那契数。
在一行输人一个正整数n(n>=10)。
在一行输出大于n的最小斐波那契数。
在这里给出一组输入。例如:
10
在这里给出相应的输出。例如:
13
代码长度限制
16 KB
时间限制
400 ms
内存限制
解题思路:
先定义两个变量a,b等于0,再用一个循环来进行斐波那契数列的项的递增,并进行判断直到大于n后跳出循环并输出。
可得源代码如下;
#include<stdio.h>
int main()
{
int a=1,b=1,c;
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){ //循环次数一定小于n故可用i<=n做判断
c=b; //再定义一个变量来记录b值;
b=a+b,
a=c;
if(b>n)
{
printf("%d",b);
break;
}
}
return 0;
}
优化:
方式:for循环中有一个判断条件,循环内部还有一个if的判断,两者可进行简化。如下:
#include<stdio.h>
int main()
{
int a=1,b=1,c;
int n;
scanf("%d",&n);
while(b<=n){
c=b;
b=a+b,
a=c;
}
printf("%d",b);
return 0;
}
这样循环一次就只需进行 一次判断。