永发信息网

C语言如何用数组求Fibonacci数列的前N项和

答案:3  悬赏:50  手机版
解决时间 2021-03-24 13:14
  • 提问者网友:轮囘Li巡影
  • 2021-03-24 04:26
C语言如何用数组求Fibonacci数列的前N项和
最佳答案
  • 五星知识达人网友:青灯有味
  • 2021-03-24 04:31
什么是Fibonacci数列。
Fibonacci数列列出的前几项:1,1,2,3,5,8,13,21,3前两项之和等于第三项,这个也就是大家说的黄金分割。
递推式:
F1 = 1               (n = 1)
F2 = 1               (n = 2)
Fn = Fn-1 + Fn-2     (n ≥2)
用C语言完成的求前N项之和:

#include
void main(){
 long sum=0;
 long a[100];
 int i,n;
 scanf("%d",&n);    //输入N
 a[0]=a[1]=1;
 sum=2;
 for(i=2;i   a[i]=a[i-1]+a[i-2];    //求第N项
   sum=sum+a[i];    //累加求和
 }
 printf("%ld",sum);
}
全部回答
  • 1楼网友:爱难随人意
  • 2021-03-24 06:31
#include
#include
#define N 200
long int F[N];
void Fi(int n);
long int Sum(int n);
void main()
{
int n;
long int sum;
printf("你想求多少项的和?请输入:");
scanf("%d",&n);
if(n<=0)
{
printf("输入应大于0!\n");
system("pause");
return;
}
Fi(n);
sum=Sum(n);
printf("Fibonacc数列前%d项和为:%ld\n",n,sum);
system("pause");
}

void Fi(int n)
{
int i=n;
F[0]=F[1]=1;
if(n>2)
for(i=2;i{
F[i]=F[i-1]+F[i-2];
}
printf("Fibonacc数列前%d项为:\n",n);
for(i=0;iprintf("%d ",F[i]);
printf("\n");
}
long int Sum(int n)
{
int i;long int sum=1;
if(n>=2)
sum=2;
if(n>=3)
for(i=2;i{
sum=sum+F[i];
}
return sum;
}
我在VC上运行过,正确。
  • 2楼网友:往事埋风中
  • 2021-03-24 05:11
斐波那契数列是个很经典的数列了,这个数列可以用两种方法实现,递归实现和循环实现,下面分别用递归和循环实现一次吧,希望对你有帮助。
递归:
Long Fibonacci( unsigned int n)
{
if(n<=0)
return 0;
if(n==1)
return 1;
return Fibonacci(n-1)+Fibonacci(n-2);
}
递归实现非常简单,代码也简单明了,但是递归有个致命的弱点,里面计算很多是重复的,当n很大的时候,计算量会变得非常大,效率非常低.
循环:
long Fibonacci( unsigned int n)
{
if(n<=0)
return 0;
if(n==1)
return 1;
long one=1;
long two=0;
long fadd=0;
for( int i=0;i<=n;i++)
{
fadd=one+two;
two=one;
one=fadd;
}
return fadd;
}
此种方法是首先根据f0,f1计算出f2,然后由f1,f2,计算出f3,依次类推,时间复杂度O(N),效率就改善了很多。推荐此种方法。
希望对你有帮助!!!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯