题目
用循环估算 π(莱布尼茨级数取前 n 项)
思路
本题用莱布尼茨级数的前 n 项近似 π:每一项正负交替,分母为 1、3、5…(通项与 1/(2*i-1) 相关)。 用 double 累加,循环 i 从 1 到 n 把每一项加进和,最后输出近似值;n 很小时偏差大是正常现象。
解题分析
莱布尼茨级数奇数项正负交替,每一项比前一项衰减慢,前几项误差很大,项数要到成千上万才勉强接近 π。练的是循环与浮点累加,别指望 n=10 就精确。
- 符号可用
sign = -sign翻转,或用(k % 2 == 0 ? 1 : -1)。 - 分母
2*k-1别写成2*(k-1),后者从 1 开始会错项。
完整程序
import java.io.*;
public class Main {
public static void main(String[] args) {
int n = 1000;
double s = 0; int sign = 1;
for (int k = 1; k <= n; k++) {
s += sign * 1.0 / (2 * k - 1);
sign = -sign;
}
System.out.printf("%.6f%n", s * 4);
}
}
运行示例
输出:
3.140593