在下列条件下编写程序以查找所有数字的平方和?

时间:2015-10-27 14:04:46

标签: java

  

给定两个数字n1和n2使得n2> n1,找到从n1到n2(包括n1和n2)的所有数字的平方和。

我的方法:

我尝试使用从n1n2迭代的for循环来解决问题,但我的回答是错误的

以下是我的代码函数:

public int computeSumofSquares (int n1, int n2) 
{
    int sum=0;
    if(n2>n1)
    {
        for(int i=n1;i<=n2;i++)
        {
            sum=((sum)+(n1*n1));
        }
    }
    return sum;
    //write your code here

}

输入

Parameters  Actual Output   Expected Output
'8' '10'    192             245

4 个答案:

答案 0 :(得分:16)

您正在每次迭代时对n1进行平方。相反,你应该平方i。作为sum=((sum)+(i*i));的简短形式,您可以撰写sum += i * i;

答案 1 :(得分:8)

sum=((sum)+(n1*n1));更改为sum=((sum)+(i*i));,因为i是递增值。

答案 2 :(得分:5)

在你的循环中 i 每次都会更改,但在你的陈述中sum=((sum)+(n1*n1));没有任何变化,在你的例子中你每次总计8 ^ 2,结果将是8 * 8 + 8 * 8 + 8 * 8 = 192。

正如大家所说,如果你在那个陈述中改变 n1 i ,就像sum=sum+i*i那样,那么你将得到你想要的结果。

答案 3 :(得分:4)

正如其他人已经说过的那样,你总是使用间隔n1的下限来计算sum(而不是你的循环变量i)。

为了完整起见,我发布了一个java8解决方案:

int n1 = 8;
int n2 = 10;
int sumOfSquares = IntStream.rangeClosed(n1, n2).map(i -> i * i).sum();

System.out.println(sumOfSquares); // 245

请检查IntStream docs以获取进一步的参考。