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