用C语言编程 编一个求Fibonacci数列前n项和程序。

2024-11-20 08:30:40
推荐回答(2个)
回答(1):

上面的代码只能输出前20项,要是输出100项或者1000项,那就越界了,这个是大数问题,不多说,上代码

====================================================================
# include
# include

int add(int num1[],int len,int num2[],int answer[])
{
int k=0,c=0;
for(int i=0;i answer[k++]=(num1[i]+num2[i]+c)%10000,c=(num1[i]+num2[i]+c)/10000;
while(c)
answer[k++]=c%10000,c/=10000; //这里采用每个数组元素存放4位数,具体问题可以具体选取合适的存放位数
return k;
}

void cpy(int num[],int len,int answer[])
{
for(int i=0;i}

int main()
{
int num;
while(scanf("%d",&num)!=EOF)
{
if(num<3)
printf("1\n");
else
{
int num1[100],num2[100],answer[100],len=1;
memset(num1,0,sizeof(num1));
memset(num2,0,sizeof(num2));
memset(answer,0,sizeof(answer));
num1[0]=num2[0]=1;
num-=2;
while(num)
{
len=add(num1,len,num2,answer);
cpy(num2,len,num1);
cpy(num1,len,answer);
num--;
}
printf("%d",num1[len-1]);//先输出第一个数以不置0的方式
for(int i=len-2;i>=0;i--)
printf("%04d",num1[i]);//以后输出时不足4为以0补之
printf("\n");
}
}
return 0;
}
====================================================================

回答(2):

编译测试结果:

请输入n:20
前20项和为:17710
请按任意键继续. . .

源代码:
#include "stdio.h"
#include "stdlib.h"

long f(int n)//递归
{
if(n==1||n==2) return 1;
return f(n-1)+f(n-2);
}

main()
{
int i,n=0;
long sum=0;
printf("请输入n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
sum+=f(i);
printf("前%d项和为:%ld\n",n,sum);
system("pause");
}