题目:
根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。
输入格式:
输入在一行中给出小于1的阈值。
输出格式:
在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。
输入样例:
0.01
输出样例:
3.132157
解决代码 :
#include<stdio.h>
#define N 10000
int main(void)
{
double a[N] = { 0 };
double b[N] = { 0 };
double n[N] = { 0 };
double m, pi,sum;
sum = 0;
a[0] = 1;
b[0] = 1;
n[0] = 1;
scanf("%lf", &m);
for (int i = 1;i < N; i++)
{
a[i] = i * a[i - 1];
b[i] = (double)((2.0 * i + 1.0) * b[i - 1]);
n[i] = (double)(a[i] / b[i]);
if (n[i] < m)
{
for (int j = 0;j <= i;j++)
{
sum += n[j];
}
pi = (double)(sum * 2.0);
printf("%.6lf", pi);
break;
}
}
}
我看了一些用while循环做的,思路确实好。但这个也算一种笨方法,哈哈哈分享下