π/2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+···
π/2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+···精度小于10^-5用函数怎么写,有没有谁知道,急!!!
#include <stdio.h> // #include <iostream> // using namespace std; double GetPI(); void main() { double dbPI = GetPI(); printf("PI = %lf \n", dbPI); // cout<<"PI = "<<dbPI<<endl; } double GetPI() { double dbPI = 0.0; // 保存最后的PI结果 double dbTraver = 1.0; // 用于遍历时候递增 double dbBuffer = 1.0; // 保存误差值。也就是在循环过程中的 1/3、(1/3)*(2/5)、(1/3)*(2/5)*(3/7) do { // 计算 1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+··· // 要求误差值不大于0.00001 。也就是 第N次循环的结果减去N - 1 次循环的结果不大于0.00001 // 就是(1/3)*(2/5)*(3/7)…… 该值两倍小于0.00001时候就可以退出循环了 而循环中 dbBuffer保存了该值 dbPI += dbBuffer; dbBuffer *= dbTraver / (2 * dbTraver + 1); dbTraver += 1.0; } while (2 * dbBuffer > 0.000001); // // 因为结束循环时候PI会放大2倍。所以误差值也要放大2倍来比较 dbPI *= 2; return dbPI; }