永发信息网

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

答案:2  悬赏:0  手机版
解决时间 2021-03-23 11:56
用C语言编程 编一个求Fibonacci数列前n项和程序。
最佳答案
编译测试结果:

请输入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");
}
全部回答
上面的代码只能输出前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;
}
====================================================================
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
林内油烟机质量怎么样,林内油烟机和然气灶怎
怎么浏览国外最新的电视剧?
小说中描写酒吧的句子
内燃机工作的一个循环中,只有________冲程对
天力保温防水批发地址在哪,我要去那里办事
手机版本的鬼武者三七游戏机在哪里能下啊?怎
丑菊这篇短文用波浪线画出能可是文章主旨的句
宽城区长春HiFi古典音响店地址有谁知道?有点
怎么把图片发到百度上查询
10米长的原木,直径70厘米,请有多少个立方。
歌词中有永恒的纪念的是啥歌了
单选题300多年前,在英国有很多贵族纷纷投入
叶县平顶山中铁物流集团(飞豹快运龚店乡营业
关于AF1女鞋的尺码选择问题。。。。
表达爱恋的现代诗句,求一首给爱人的思念的表
推荐资讯
S2 culb(芭比伦)地址在哪,我要去那里办事
铸铁哪气焊能焊吗?
战场双马尾人物的话,请问怎么升四星?
我看了看他的手,那是一只满是伤痕的水手的手
男朋友是军人,我想要,男朋友反而不要了为什
玻璃碎了什么东西能粘好
临海大田煤气多少钱一罐大罐?
单选题康有为在《孔子改制考》中把孔子说成是
淘宝卖家拒绝退款 申请了淘宝小二介入 卖家一
感慨花开花落的诗句,花开花落落花雨下联
迪丽热巴,这个炒作女,怎么有金主吗?
怎样使吸铁石吸力变小
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?