![](/img/trans.png)
[英]Write a program to round a number to the next multiple of 10 given the following conditions?
[英]Write a program to find sum of squares of all numbers given the following conditions?
給定兩個數字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
你在每次迭代時都是n1
。 相反,你應該對i
。 作為sum=((sum)+(i*i));
的簡短形式sum=((sum)+(i*i));
你可以寫sum += i * i;
改變sum=((sum)+(n1*n1));
sum=((sum)+(i*i));
因為i
是增值的價值。
changes every time but in your statement sum=((sum)+(n1*n1));
在你的循環中, 每次都會改變,但在你的陳述中sum=((sum)+(n1*n1));
沒有任何變化,每次在你的例子中你總和8 ^ 2,結果將是8 * 8 + 8 * 8 + 8 * 8 = 192。
to in that statement, something like sum=sum+i*i
, then you will get the result you want. 正如大家所說,如果你在那個陳述中將改為 ,就像sum=sum+i*i
,那么你將得到你想要的結果。
正如其他人已經說過的那樣,你總是使用區間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
文檔以獲取進一步的參考。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.