2017-01-07 1 views
-1

기본적으로 내 정수 n이 높아지지 않는 이유를 알 수 없습니다.
모든 답변 주셔서 감사합니다. 또한재귀 메서드에서 정수 증가 증가 (LinkedList)

private int n = 0; 

    public int firstIndexOf(int val) { 
     if (val == this.getValue()) { 
      return n+1; //This is were the increment should happen 
     } 
     else { 
      if (this.next != null) { 
       return this.next.firstIndexOf(val); 
      } else { 
       return -1; 
      } 
     } 
    } 

당신이 발과 같은 값이 연결된 목록에있는 모든 요소를 ​​계산하려면, 당신은 사용할 수 있습니다

public int n; 

    public int firstIndexOf(T val) { 
    if (val == this.getValue()) { 
     return n; 
    } else { 
     if (val != this.getValue() && this.next != null) { 
      n++; 
      return this.next.firstIndexOf(val); 

     } else { 
      return -1; 
     } 
    } 
    } 
+0

나는 이것이 자바라고 생각합니까? 귀하는 귀하의 질문에 그러한 세부 사항을 포함시켜야합니다. – abigperson

+0

찾고있는 요소가 항상 첫 번째 노드에서 발견되었거나 목록에 하나의 요소 만 있기 때문에. 주의 사항 1. 이것은 잘못된 프로그래밍입니다. 스레드로부터 안전하지는 않습니다. 'n'의 새로운 값을 매개 변수로 전달해야합니다. 2. 첫 번째'! ='테스트는 필요 없습니다. 이미 말한 '다른 사람'이니까. 3. 값은'=='이 아닌'equals()'와 비교해야합니다. – EJP

+0

괜찮습니다. 문제는, 학생 과제의 한 부분이며, Java에서 꽤 새로운 것입니다. 왜 그 문제가 나쁜 것입니까. 예, 당신의 권리, 나는 첫 번째를 지울 수 있습니다! = 감사합니다. 매개 변수를 추가 할 수 없습니다. 어쩌면 해결책이 있습니까? 그렇지 않으면 내가 아닌 재귀 메서드로 만들 수 있습니다. 편집 : 나는 생각을 가지고, 나는 val을 복사하고 매개 변수 n을 가진 또 다른 방법을 만든다고 생각합니다. 그것이 효과가 있기를 바랍니다! – HosenHochsteckManuel

답변

0

증분은 (N ++) 잘못된 상태 체크에 있었다 이 :

private int n = 0; 

public int firstIndexOf(int val) { 
    if (val == this.getValue()) { 
     if (this.next != null) { 
      return 1 + this.next.firstIndexOf(val); 
     } 
     else { 
      return 1; 
     } 
    } else { 
     if (this.next != null) { 
      return this.next.firstIndexOf(val); 

     } else { 
      return 0; 
     } 
    } 
} 
+0

좋은, 고마워! – HosenHochsteckManuel