2014-12-13 4 views
-2

포럼에 대한 답변을 찾을 수 없습니다. 미안 답변을 받았지만 놓쳤습니다.비 정적 메서드에서 재귀

비 정적 방법으로 재귀를 사용하여 여기에 공란을 그립니다.

예 :

public static void farLeft(BTNode root){ 
    if(root !=null) 
     return farLeft(root.left); 
    } 

이 내가 여기에 넣어 단지 어떤 임의의 코드입니다. 이제 비 정적 메서드를 사용하여 똑같은 일을하고 싶다면 비 정적 메서드에서 재귀를 어떻게 사용할 수 있습니까? 내 책은 그것을 잘 설명하지 못합니다.

+0

그것은 재귀에 올 때 방법은 정적 또는 비 정적인지 차이를 만들 확률이 낮다. 당신이 생각하는 방법에 대한 예를 들려 줄 수 있습니까? –

+0

종료 조건이있는 한 모든 방법을 반복 할 수 있습니다. 정적이지 않은 경우 클래스의 인스턴스 메소드로 호출하면됩니다. –

+0

'static'을 제거 하시겠습니까? 너가 속한 반은 무엇 이니? – Kent

답변

1

공백을 반환하는 메서드에서 비 void 개체를 반환하고 있습니다. 그 외에도 다음과 같이 비 정적 메서드를 사용할 수 있습니다.

public BTNode farLeft(BTNode root){ 
    if(root !=null) 
     return farLeft(root.left); 

    //Return root because root has no left child 
    return root; 
} 
0

정적이 아닌 메서드의 경우 클래스 인스턴스를 사용하여 호출해야합니다. 메소드가 비공개가 아니어야합니다. 메소드가 클래스 BTNode에 구현 된 경우

는 다음과 같이 보일 것입니다 :

public BTNode farLeft(BTNode root){ 
    if(root !=null) 
     return root.farLeft(root.left); 
} 
0
public BTNode farLeft(BTNode root) 
{ 
    BTNode farLeftChild = null; 
    if(root !=null) 
    { 
     farLeftChild = farLeft(root.left);   
    } 

    return farLeftChild == null? root : farLeftChild; 
} 



희망이 도움이됩니다. 행운을 빌며 즐겁게 프로그래밍하세요!

건배,

고원