π 的计算公式为 16 * arctan(1/5) - 4 * arctan(1/239); arctan(x) 的计算公式为 x - x^3/3 + x^5/5 -x^7/7 + ...... 直到级数的某项绝对值不大于 10^(-15) 为止,π 跟 x 均为 double 型 递归代码如下: /************************************************************************* > File Name: tan.cpp > Author: hai--feng > Mail: haifeng@126.com > Created Time: Mon 02 Jul 2012 02:04:05 PM CST ************************************************************************/ #include<iostream> using namespace std; //10^(-15) const double zero = (1e-15); //求 i^exponent (int) int get_exponent(int i, int exponent) { int res; if(exponent == 0) { return 1; } else if(exponent == 1) { return i; } else { res = i * get_exponent(i,exponent-1); return res; } } //求 i^exponent (double) double get_exponent(double i, int exponent) { double res; if(exponent == 1) { return i; } else { res = i * get_exponent(i,exponent-1); return res; } } //arctan 公式分析结果为 arctan(x, i) = ((-1)^(i-1)) * x^(2i-1) /(2i-1) + arctan(x, i+1) double arctan(double data, int i) { double number; double signal; signal = get_exponent(-1, i-1) * get_exponent(data, 2*i-1) / (2*i -1); if(signal <= zero && signal >= -zero) { return 0; } else { number = signal + arctan(data, i+1); return number; } } double get_PI(void) { double PI; PI = 16.0*arctan(1/5.0, 1) - 4.0*arctan(1/239.0, 1); return PI; } int main(void) { double a; a = get_PI(); cout << "PI = " << a << endl; return 0; }
C++ 练习如何用递归求π的值
最新推荐文章于 2024-04-15 21:08:00 发布