1

これは私が持っているものですが、うまくいきません。コンパイルしようとすると、次のエラー メッセージが表示されます。

int result = 0;
^^^^^^^^^^^^^^^
到達不能なコード

私のコード:

public int sumOfOddIntegers (int n) {

    if(n < 1);
    return 0;

    int result = 0;
    for(int i = n - 1; i > 0; i--)
    {
        if(i % 2 != 0) {
            result = result + i;
       }
    }
    return result;
}
4

5 に答える 5

0

他の人が言ったように、 if ステートメントのセミコロンが問題です。ただし、個人的には次のようにします。

public int sumOfOddIntegers (int n) 
{
    int result = 0;

    if(n < 1)
        return result;

    for(int i = 1; i <= n; i += 2)
    {
        result += i;
    }
    return result;
}

このようにして、反復回数を半分にすることができます。他のすべての数が奇数であることはわかっています。

于 2013-04-29T11:54:30.187 に答える
0

if(n < 1);あなたの問題です。return'以下は常に実行されるため、残りのコードには到達できません。

;アフターを削除しif(n < 1)ます。

于 2013-04-29T11:51:26.133 に答える
0

数列は公差が 2 の等差数列なので、その合計は次の式で与えられます。

合計 = n/2(2a+(n-1)d

ここで、n = Math.ceil(k); ここで、k は指定された数値です。そしてd = 2、a = 1

public int sumOfOddIntegers (int n) {         

if(n < 1);
return 0;

int totalNumber = Math.ceil(n/2);         

return  (totalNumber/2)*(2 + (totalNumber-1)*2);

`

于 2013-04-30T10:40:36.497 に答える