根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。
2π=1+31+3×52!+3×5×73!+⋯+3×5×7×⋯×(2n+1)n!+⋯
输入格式:
输入在一行中给出小于1的阈值。
输出格式:
在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。
输入样例:
0.01
结尾无空行
输出样例:
3.132157
结尾无空行
#include <stdio.h>
double fenzi (int i) //注意函数类型是double
{
if (i == 0 || i == 1)
{
return 1;
}
else
{
return fenzi (i - 1) * i;
}
}
double fenmu (int n)
{
int i = 3;
double s = 1;
for (int j = 1; j <= n; j++)
{
s = s * i;
i += 2;
}
return s;
}
int main (void)
{
int i = 1;
double j; //j是输入的值
double k = 1; //k是总和,根据公式,2*k就是π
scanf ("%lf",&j);
while (1)
{
k = k + fenzi(i) / fenmu(i);
if (fenzi(i) / fenmu(i) < j)
{
break;
}
i++;
}
printf ("%.6lf",2 * k);
return 0;
}