给定两个数字n1和n2使得n2> n1,找到从n1到n2(包括n1和n2)的所有数字的平方和。
我的方法:
我尝试使用从n1
到n2
迭代的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
答案 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以获取进一步的参考。