JAVA编程
使用一下序列可以大致估算PI的值。
P=4*(1 - 1/3 + 1/5 -1/7 + 1/9 - 1/11 +...)
编写程序,寻找在得到3.14159之前需要计算该序列的多少项?
我是这样写的 ,请问有什么问题?
使用一下序列可以大致估算PI的值。
P=4*(1 - 1/3 + 1/5 -1/7 + 1/9 - 1/11 +...)
编写程序,寻找在得到3.14159之前需要计算该序列的多少项?
我是这样写的 ,请问有什么问题?
// 计算第n项PI值
private double getPI(int n) {
// 记录公式括号里多项式的和
sum = 0;
// 分母
int m = 1;
// 累计
for (int i = 1; i <= n; i++) {
// 奇数项算加法,偶数项算减法
if(i % 2 == 1) {
sum = sum + 1/m;
} else {
sum = sum - 1/m;
}
// 分母自增2
m = m + 2;
}
// 返回第n项得到的PI值
return 4.0 * sum;
}public int getN() {
final int PI = 3.14159; // 目标值常量
int n = 1;
// 一直循环,直到达到所需精度为止
while((getPI(n) - PI) < PI) {
n = n + 1;
// 设定最大循环次数,避免死循环
if (n > 10000) {
break;
}
} // n即是所需项编号
return n;
}
final int pi = 314159;
int i = 1;
int attempt = 400000;
while (attempt != pi) {
i++;
attempt += (i%2==1 ? 400000/(i*2-1) : -400000/(i*2-1));
}
System.out.println(i);结果:9092
int i = 1;
int attempt = 400000;
while (attempt != pi) {
i++;
attempt += (i%2==1 ? 400000/(i*2-1) : -400000/(i*2-1));
}
System.out.println(i);