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


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

 

#include
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
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;那么只输出三位数字