我有这个任务
Pi的值可以由以下乘积确定
2 * 2 4 * 4 6 * 6 N * N Pi = 2 * ----- * ----- * ----- * ... * ----------------- 1 * 3 3 * 5 5 * 7 (N - 1) * (N + 1)
编写一个 C 程序,计算 Pi 的近似值,只要一般项大于 1 + 10 -9。
为了解决这个问题,我写了这段代码:
#include <stdio.h>
#include <stdlib.h>
int main() {
double pi;
const double End =
1.0 + (1.0 / (10.0 * 10.0 * 10.0 * 10.0 * 10.0 * 10.0 * 10.0 * 10.0 * 10.0));
double N = 2.0;
pi = 2.0 * ((N * N) / ((N - 1.0) * (N + 1.0)));
while (pi > End) {
N += 2.0;
pi *= ((N * N) / ((N - 1.0) * (N + 1.0)));
}
printf("%lf", pi);
return 0;
}
我真的无法理解事情是如何运作的。我设法只使用double
变量并添加.0
到所有数字文字中,但是程序被卡住并且在我启动它时没有给出任何值。
为什么?