C言語は1組の点数の数の列の和を求めます

2827 ワード

题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...この数列の上位20项の和を求める.1.プログラム分析:分子と分母の変化の法則をつかんでください.
最初のコードはフィボナッチ数列にウサギを求める方法の思考定式を受けて、分子分母を単独で放した.

#include
int main()
{
    int i;
    double m[21];
    double n[21];
     m[1]=2;
     m[2]=3;
     n[1]=1;
     n[2]=2;
    double sum=0;
    for(i=1;i<=20;i++)
    {
        if(i==1)
        {
            m[1]=2;n[1]=1;
        }
        if(i==2)
        {
            m[2]=3;n[2]=2;
        }
        if(i>2)
        {
            m[i]=m[i-1]+m[i-2];
            n[i]=n[i-1]+n[i-2];
        }


        sum=sum+m[i]/n[i];


    }
    printf(" 20    %f",sum);


}

ここで,分子分母の関係を見抜くことができれば,コードは簡潔になる.
    int i;
    double m=2,n=1,sum=0,t;
    for(i=1;i<=20;i++)
    {
        sum=sum+m/n;
        t=m; //         
        m=m+n;
        n=t;

    }
    printf(" 20    %f",sum);

}