C语言----两种方法用C语言代码实现斐波那契数列

方法一:调用函数(递归)

 

#include<stdio.h>
int fac(int n)//递归函数
{
int res;
if(n==1||n==2)//前两项是 1 如果没有{},那么默认执行其后面跟着的一条语句
return 1;
return res=fac(n-1)+fac(n-2);//实行递归,第三项开始是第二项的值加第一项
}
int main()
{
int n,ans;//n代表第n项
scanf("%d",&n);
ans=fac(n)%10000;//调用递归函数
printf("%d",ans);
return 0;//有局限,到第40项以后会算的特别慢,更大之后可能因为值的溢出所以不出结果了
}

第47项后值溢出 变为负数

方法二:(递推)

 

#include<stdio.h>
int main()
{
int n,ans,i;
int a=1,b=1,c=0;//a , b 分别为第一 二项,C为第三项
scanf("%d",&n);
for(i=3;i<=n;i++)
{
c=a+b;//a,b,c的值开始逐个推换
a=b;
b=c;
}
printf("%d",c);
return 0;
}

 

 

补充:如果是求第xxxxxxxxx项的后四位数字,即可在for循环里添加:

if(c>10000)
{
a%=10000;
b%=10000;
c%=10000;
}

但是如果千位为0;那么只输出三位数字

 

 

 

posted @   青弦c  阅读(2517)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示