2013-04-29 2 views
1

이것은 내가 가지고 있지만 작동하지 않습니다. 내가 컴파일 할 때이 오류 메시지가 얻을 :1에서 n (홀수)까지의 홀수 정수의 합을 반환하는 메서드?

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; 
} 
+0

당신은 예를 들어 ** 언어 ** 당신이 (적절한 태그를 사용해야합니다 사용), 이 질문에 관심을 갖기를 원한다면 'methods'는 쓸데없는 태그입니다. –

+0

"작동하지 않습니다"라고 말하면 도움이되지 않습니다. 무엇이 출력됩니까? 무엇을 출력 할 것으로 예상됩니까? –

+0

정확하게 "작동하지 않는"것은 무엇입니까? –

답변

4
if(n < 1); 
    return 0; 

를 반환하는 실행은 동등 바른 길)

if(n < 1) { 
    return 0; 
} 
3

문 :

if(n < 1); 

세미콜론으로 인해 작동하지 않습니다. 비교 결과가 무엇이든 비교가 평가되고 아무 것도 수행되지 않습니다.

if(n < 1) 
    return 0; 

또는 (: 그것은 대체 될 갈까요

if(n < 1) { 
} 

return 0; 

:

후, 다음 행이 0

0

if(n < 1);이 문제입니다. 나머지 코드는 도달 할 수 없으며 다음 return'이 항상 실행됩니다.

if(n < 1) 이후에 ;을 제거하십시오.

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; 
} 

이렇게하면 반복 수를 반으로 줄일 수 있습니다. 우리는 다른 모든 숫자가 이상하다는 것을 알고 있습니다. 그렇다면 왜 심지어 사람들을 반복하는 것을 귀찮게하고 왜 그렇지 않은지 알 때 홀수인지 확인하십시오.

+1

최적화를 위해 간다면 'int result = (n + 1)/2; return result * result;'('n <0'을 ​​체크 한 후)? –

+0

물론, 그것도 작동, 나는 너무 멀리 최적화의 영역으로 벗어나고 싶지 않았어 알리 너무 많이 떨어져 겁을! – Xefan

+0

나는 그가 홀수 정수를 어떻게 생성 하는지를 보았을 때 cringed 된 OP를 제외하고는이 모든 것을 읽었을 것입니다. 그는 세미콜론이 없어도 그의 구현에 대해 충분한 점수를 얻지 못할 것입니다. 당신은 C "for"및 "return"구문, 간단한 부울 논리 및 합계를 누적하는 변수 사용에 대한 확고한 이해를 보여줍니다. 네가 5/5를 얻을 것이라고 확신한다. –

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); 

`

관련 문제