JAVA编程
使用一下序列可以大致估算PI的值。
P=4*(1 - 1/3 + 1/5 -1/7 + 1/9 - 1/11 +...)
编写程序,寻找在得到3.14159之前需要计算该序列的多少项?
我是这样写的 ,请问有什么问题?

解决方案 »

  1.   

    你是怎么写的没看到,给下我的思路吧,声明:以下代码未经验证。
    // 计算第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;
    }
      

  2.   

    不好意思,直接从编辑器拷过来的,没想到这么乱。可能是用了Tab键吧。
      

  3.   

    为了效率起见,没用double,用int算的。
    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
      

  4.   

     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);