計算數列:2/1+3/2+5/3+8/5+…的前10項的和

題目:計算數列:2/1+3/2+5/3+8/5+…的前10項的和ios

分析:乍一看,還覺得是斐波拉契數列呢,而後就用遞歸方程把分子、分母分別求出來,而後相除求和便可。規律是這樣,但這麼作程序算法會溢出。因此不能利用遞歸循環來解此題。進一步分析會發現,後面每一項的分子是前一項的分子和分母的和,而每一項的分母是前一項的分子,因此抓住這個規律,直接用循環便可求出數列前N項的和。算法

代碼:spa

#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    int a = 2, b = 1;//a爲分子,b爲分母
    float s = 0;//求和
    int n = 20;//前20項的和
    int t = 0;//臨時變量

    for (int i = 0; i < n; i++)
    {
        s += (float)a / b;//累加項的和

        t = a;//將分子的值給臨時變量
        a = a + b; //將分子+分母的和給新的分子
        b = t; //將臨時變量的值給分母
    }
    cout<<s<<endl;//32.6603
    return 0;
}
相關文章
相關標籤/搜索