簡體   English   中英

在下列條件下編寫程序以查找所有數字的平方和?

[英]Write a program to find sum of squares of all numbers given the following conditions?

給定兩個數字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

你在每次迭代時都是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM