2017-11-13 1 views
0

이 코드가 있습니다. 아무도 왜 이것이 일어나고 있는지 말해 줄 수 있습니까?자바 return 문 우선 순위

+1

이 조건에서 만 반환되기 때문에 이가 : nodo.getValor() == raiz.getValor()'? 나는 당신이 buscar (nodo, raiz.getIzq()); *와 *'buscar (nodo, raiz.getDer());); ** 및 **'return buscar (nodo, raiz.getDer()); –

+0

당신은'Nodo '에 대한 코드를 보여주지 않았고, 기본적인 디버깅을해야하고, 코드를 단계별로 실행하여 오류가 어디에서 발생하는지 살펴야합니다. – chrylis

+0

@ CardinalSystem 당신이 옳았어요. 모든 옵션에서 수익을 사용해야합니다. – juancsr

답변

1

return 재귀 호출의 결과가 필요하면 else 두 가지를 제거 할 수도 있습니다 (이후 return). 그리고 concieration보다 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()); 
}