问题补充:
题目只这样的:
本题要求编写程序,根据下式求\piπ的近似值,直到最后一项小于给定精度eps。
PI/2=1+1/(1*3)+2!/(1*3*5)+3!/(1*3*5*7)+...+n!/(1*3*5*...*(2n+1))
程序是这样的:
#include #include
double fact(int i);double mul(int i);double dx(int i);
int main(void){ double PI,eps,sum = 1; int i = 1; scanf("%le",&eps); while(dx(i) > eps) { sum += dx(i); i ++; } PI = sum * 2; printf("PI = %.5lf",PI);}
double dx(int i){ double t; t = fact(i) / mul(i); return t; }
double fact(int i){ double sum = 1; for(int j = 1;j <= i;j ++) { sum *= j; } return sum;}
double mul(int i){ double sum = 1; for(int j = 1;j <= 2 * i + 1;j = j + 2) { sum *= j; } return sum;}
当输入1e-5时,结果应该是3.14158,可是 ,我的结果却是3.14157 不知道错哪了 希望高人指点