2017-11-13 18 views
0

私はこのコードを持っています。誰がなぜこれが起こっているのか教えていただけますか?Javaのreturn文の優先順位

+1

この状態から戻ってくるだけなので、それはありますか? 'nodo.getValor()== raiz.getValor()'?私はあなたが変更を意味すると思います。* 'buscar(nodo、raiz.getIzq());' * and * 'buscar(nodo、raiz.getDer());' * ); **および** 'return buscar(nodo、raiz.getDer());' **? –

+0

あなたは 'Nodo'のコードを表示していないので、基本的なデバッグやコードの実行、どこが間違っているのかを見ていく必要があります。 – chrylis

+0

@ CardinalSystemあなたはそうだった、私はすべてのオプションでリターンを使用する必要があります、ありがとう:) – juancsr

答えて

1

あなたは再帰呼び出しの結果をreturnにする必要があります。elseの2つを削除することもできます(return以降)。そして、私は連結よりもString.formatを好むでしょう。同様に、

private String buscar(Nodo nodo, Nodo raiz) { 
    System.out.println(nivel); 
    this.nivel++; 

    if (raiz != null) { 
     if (nodo.getValor() == raiz.getValor()) { 
      System.out.println("es igual"); 
      return String.format("El número %d está en el nivel: %d", 
         nodo.getValor(), this.nivel); 
     } else if (nodo.getValor() < raiz.getValor()) { 
      return buscar(nodo, raiz.getIzq()); // return the recursive result 
     } 
     System.out.println("es mayor"); 
     return buscar(nodo, raiz.getDer()); // return the recursive result 
    } 
    return String.format("El número %d no forma parte del árbol", nodo.getValor()); 
}