代码之家  ›  专栏  ›  技术社区  ›  vinceling

编程系列

  •  -1
  • vinceling  · 技术社区  · 8 年前

    我的大脑有问题 exercise

    我应该写一个程序,计算这个级数,并给出每个循环的值。如果循环中序列值的变化小于10^-5,则序列也需要中断。

    我希望我的解释到目前为止是可以理解的。

    这就是我想到的:

    public static void main(String [] args) {
    
        double sum = 0;
        double summand;
        double k = 1;
    
        do
        {
            summand = 1.0/Math.pow(k, 2);
            sum = 6 * (sum + summand);
            k++;
        }
    
        while (summand > 1E-5);
        System.out.println(sum);
    }
    

    现在我需要帮助,因为我对Java很陌生,我不知道这是对还是错。

    提前感谢您的帮助!

    2 回复  |  直到 8 年前
        1
  •  2
  •   Alnitak    8 年前

    你的 sum 行是错误的-正如所写的,到目前为止,您正在累计乘以您的价值 每次迭代 ,而你应该能够从最初提出的问题中看出,6的因子只适用一次。

    您需要:

    sum = sum + 6 * summand
    

    或者将乘法保留为6,直到 之后 与给定公式更接近的总和:

    do {
        summand = 1.0 / (k * k);
        sum += summand;
    } while (summand > 1e-5);
    sum *= 6.0;
    
        2
  •  0
  •   Lino    8 年前

    只需移动 System.out.println(sum) 在回路内部。

    public static void main(String [] args) {
    
        double sum = 0;
        double summand;
        double k = 1;
    
        do
        {
            summand = 1.0/Math.pow(k, 2);
            sum = 6 * (sum + summand);
            k++;
            System.out.println(sum); // <-- here it's right
        }
    
        while (summand > 1E-5);
    }
    

    这样,它将在循环的每次迭代中打印出来。