题目描述
有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。
输入
N
输出
数列前N项和
样例输入复制
10
样例输出复制
16.48
解题思路
1.首先观察数列每一项之间的规律
2.得出规律:这个数列每项的分子是前一项的分子分母之和,
每项分母为前一项的分子
3.根据规律写出求和循环,注意精度和输出格式要求
解题代码
//有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
int N;
cin>>N;
double sum = 0;
double numerator = 2,denominator = 1;//分别代表分子和分母
//观察这个数列可知每项的分子是前一项的分子分母之和,分母为前一项的分子
for (int i = 1; i <= N; ++i) {
double temp;
sum +=numerator/denominator;
temp = denominator;//用来保存前一项的分母
denominator = numerator;
numerator = numerator+temp;
}
cout<<fixed<<setprecision(2)<<sum<<endl;
}