试图添加第一个连续奇数平方的总和?

时间:2016-07-09 17:18:13

标签: java loops sum

我试图添加一个连续奇数平方的总和来加起来相同的数字。例如:加在一起的前4个连续奇数平方数将等于84,(1 * 1)+(3 * 3)+(5 * 5)+(7 * 7)= 84.附加是我的代码。结果2,非循环代码是正确的。我需要帮助解决我在使用result1的循环代码时出错的问题。

Inputnumber等于请求的奇数平方数。

public static int sumWithLoop (int inputNumber) 
{
    int result1 = 0;
    int counter = 1;

    while (counter <= inputNumber)
    {
        result1 = result1*result1 + counter;
        counter = counter + 2;
    }
    return result1;
}
public static int sumWithoutLoop (int inputNumber)
{

    int result2 = (inputNumber*(2 * inputNumber - 1) * (2 * inputNumber + 1) / 3);
    return result2;
}

2 个答案:

答案 0 :(得分:1)

您可能需要result1 = result1 + counter * counter;而不是result1 = result1*result1 + counter;

答案 1 :(得分:0)

您的大多数问题都在while循环内的数学中。

  1. result1应初始化为1.(至少我正在这样做。)
  2. 您在广告块result1中的第一行并向其添加counter。你需要的是更像这样的东西:

    result1 = result1 + (int) (Math.pow(1 + 2 * counter, 2));
    

    这需要result1并为其添加下一个奇数平方。 (1 + 2 * counter =下一个奇数)

  3. 使用上面的代码确定下一个奇数,counter应该在while循环结束时增加 1 ,而不是2(因为我乘以counter函数中的Math.pow乘以2。
  4. 我的最终代码如下:

    public static int sumWithLoop (int inputNumber) 
    {
        int result1 = 1;
        int counter = 1;
    
        while (counter < inputNumber)
        {
            result1 = result1 + (int) (Math.pow(1 + 2 * counter, 2));
            counter = counter + 1;
        }
        return result1;
    }
    

    inputNumber为4时返回84,当它为5时返回165,当它为6时返回286等等,所以它看起来像是有效的。 希望这有帮助!

    P.S。仅供参考,我/你可以在while循环的第一行使用result1 += (int) (Math.pow(1 + 2 * counter, 2));。区别在于 + = 运算符,它将以下值添加到前面的变量中。它比this = this + somethingMore;

    更简洁

    此外,在第二行中,我们可以使用counter++;,而不是counter = counter + 1; ++ 在其使用的变量上添加一个。