C语言编程:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

如题所述

1,2,3,5,8,13,21 ... 从第三项开始,F(n)=F(n-1)+F(n-2),符合斐波那契数列特征。

本题的分数序列,以上述数列的第n项作为n项的分母,以n+1项作为n项的分子。

不懂C语言。

一般来说,分数计算的结果,应该以分数形式精确表达。

写了一段fortran代码,计算这个数列前20项的和。

sum = 302163077445280087617864490505 / 9251704366605890848773498384

近似值为:32.660260798641642899358906005474

具体计算结果和fortran代码如下:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-08-25

#include<stdio.h>

#include<math.h>

int main()

{ int i,a=2,b=1,t;

  double s=0;

  for (i=0; i<20; i++)

    { s+=1.0*a/b;

      t=a+b;

      b=a;

      a=t;

    }

  printf("%lf\n",s);

  return 0;

}

第2个回答  2008-01-08
观察分数序列,发现分子是2,3,5... 分母是,2,3,5...实际上都是斐波那契数列的一部份.
斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21……这个数列从第三项开始,每一项都等于前两项之和。
所以只要给出两个初始值,后面的数字就可以用前面的数的和来表示.
这里用x表示分子,y表示分母.用for循环把分数序列前20项加起来.最后打印结果.
sum+=(float)(x)/y; 用了强制类型转换,因为两个int型的数相除,结果也会是int型.
第3个回答  2022-08-10
参考代码如下:
#include "stdio.h"
void main()
{
int n,t,number=20;
float a=2,b=1,s=0;
for(n=1;n<=number;n++)
{
s=s+a/b;
t=a;a=a+b;b=t;
}
printf("sum is %9.6f\n",s);
getch();
}本回答被网友采纳
相似回答