根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。
输入格式:
输出格式:
输入样例:
0.01
输出样例:
3.132157
思路
等号右边是一系列项的累加,当最后一项小于阈值时,我们就可以计算结果了。
分子是阶乘形式,我们没必要用递归算出值再加起来,而是算好某一项,再累乘求和即可。分母也是同样的处理方法。
代码
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
double eps = 0;
cin >> eps;
double fenzi = 1, fenmu = 1, pi = 1;
double item = 1;
while(fenzi / fenmu > eps) {
fenzi *= item;
fenmu *= 2.0 * item + 1.0;
item += 1.0;
pi += fenzi / fenmu;
}
printf("%.6lf", pi * 2);
return 0;
}