題目:計算數列: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; }