7-4 近似求PI (10 分)
本题要求编写程序,根据下式求π的近似值,直到最后一项小于给定精度eps。
π
2
=
1
+
1
!
3
+
2
!
3
×
5
+
3
!
3
×
5
×
7
+
⋯
+
i
!
3
×
5
×
⋯
×
(
2
×
i
+
1
)
+
⋯
\frac{π}{2}=1+\frac{1!}{3}+\frac{2!}{3×5}+\frac{3!}{3×5×7}+⋯+\frac{i!}{3×5×⋯×(2×i+1)}+⋯
2π=1+31!+3×52!+3×5×73!+⋯+3×5×⋯×(2×i+1)i!+⋯
输入格式:
输入在一行中给出精度eps,可以使用以下语句来读输入:
scanf("%le", &eps);
输出格式:
在一行内,按照以下格式输出π的近似值(保留小数点后5位):
PI = 近似值
输入样例:
1E-5
输出样例:
PI = 3.14158
我的代码:
#include<stdio.h>
double Jchen(int n);
double LJchen(int n);
int main(){
int i;
double Ps,Pi=0,eps;
scanf("%le", &eps); //%le意思是用科学计数法输出的double数据。
for(i=1;;i++){
Ps = Jchen(i-1) / LJchen(i);
Pi = Pi + Ps;
if(Ps < eps)
break;
}
printf("PI = %.5lf\n",Pi * 2);
//printf("%lf %lf",Jchen(3),LJchen(3));
return 0;
}
double Jchen(int n){ //求阶乘
int i;
double sum=1.0;
for(i = 1;i<=n;i++){
sum = sum * i;
}
return sum;
}
double LJchen(int n){ //求分母
int i;
double sum = 1.0;
for(i=1;i<=n;i++){
sum = sum * (i*2 - 1);
}
return sum;
}