2017-01-07 7 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

私はこれをJavaと見なしますか?あなたはそのような詳細をあなたの質問に含めるべきです。 – 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

関連する問題