C语言练习第5天---输出斐波那契Fibonacci数列中小于t的最大的一个数

输出斐波那契Fibonacci数列中小于t的最大的一个数,其中由键盘输入。例如,输入t=1000时,输出987 说明:斐波那契数列:1,1,2,3,5,8,13,21...

//依次查找(需要用到循环结构)斐波那契数列中的数字,直到符合条件(需要用到选择结构)再输出。

//利用函数
#include<stdio.h>
int fibo(int n); //函数声明,告诉编译器程序中会用到这个函数,先不要着急报错 
int main() 
{
	int t;
	printf("请输入t的值:");
	scanf("%d",&t);
  int i=1;
   int num;
   int pre; 
   	if(t<2)//判断能否在斐波那契数列中找到小于t的最大一个数 
{
	printf("不存在!");

}
else{
   while(num<t)//通过循环找到斐波那契数列中小于t的最大的一个数 
   {
   	pre=num;
   	i++;
   	num=fibo(i);//调用函数 
   }

  printf("%d",pre);}
  return 0;
}
int fibo(int n)//斐波那契数列的第n项 (自定义函数,n为形式参数) 
{
	if(n==1||n==2)
{
		return 1;//返回1 
}
else 
{
	return fibo(n-2)+fibo(n-1);//利用递归 ,返回前两数之和 
	}
	
}
//方法二
#include<stdio.h>
int main() 
{
  int i,a,count,sum,pre;//定义5个整型变量
  i=1;
  a=1;
  sum=1;
  int t;
  printf("请输入t的值:");
  scanf("%d",&t);
  	if(t<2)//判断能否在斐波那契数列中找到小于t的最大一个数 
{
	printf("不存在!");
}
else{
  while(sum<t)//进入循环,依次查找斐波那契数列中的数,直到大于等于t时结束循环
  {	
  		a=i;
  		i=sum;
  		pre=sum;
  		sum=i+a;	//后一个数等于前两个数之和 
   }
   	printf("%d\t",pre);
}
return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万能的憨憨^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值