C语言求一组分数数列之和

题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。 1.程序分析:请抓住分子与分母的变化规律。 第一个代码是受斐波那契数列求兔子的方法的思维定式,把分子分母单独放开了
  1. #include<stdio.h>
  2. int main()
  3. {
  4.     int i;
  5.     double m[21];
  6.     double n[21];
  7.      m[1]=2;
  8.      m[2]=3;
  9.      n[1]=1;
  10.      n[2]=2;
  11.     double sum=0;
  12.     for(i=1;i<=20;i++)
  13.     {
  14.         if(i==1)
  15.         {
  16.             m[1]=2;n[1]=1;
  17.         }
  18.         if(i==2)
  19.         {
  20.             m[2]=3;n[2]=2;
  21.         }
  22.         if(i>2)
  23.         {
  24.             m[i]=m[i-1]+m[i-2];
  25.             n[i]=n[i-1]+n[i-2];
  26.         }
  27.         sum=sum+m[i]/n[i];
  28.     }
  29.     printf("前20项总和为%f",sum);
  30. }
这里,如果能看穿分子分母的关系,代码就会很简洁
  1. #include<stdio.h>
  2. int main()
  3. {
  4.    int i;
  5.     double m=2,n=1,sum=0,t;
  6.     for(i=1;i<=20;i++)
  7.     {
  8.         sum=sum+m/n;
  9.         t=m; //调换分子与分母数字
  10.         m=m+n;
  11.         n=t;
  12.     }
  13.     printf("前20项总和为%f",sum);
  14. }
  本文地址:http://liuyanzhao.com/3440.html 转载请注明
  • A+
所属分类: C

发表评论

目前评论:1