题目

用循环估算 π(莱布尼茨级数取前 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