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


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

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

代碼:

#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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM