편집 기록

편집 기록
  • 프로필 noah0508님의 편집
    날짜2021.05.06

    자바 재귀 호출 (초보)


    public void preorder(int index) {
            // 내용 작성
            if(aTree[index] != null) {
            System.out.print(aTree[index]);
            preorder(2 * index);
            preorder(2 * index + 1);
            }
        }
    

    간단한 트리 전위 순회 함수 입니다. 배열은 32 크기 사이즈 오브젝트 배열로, 입력 index 는 1입니다. aTree[12] 부터 null 값입니다. 제가 궁금한 것은 디버깅 해보니까 index 가 16이 되어서 if 문이 false 가 되었을때 다시 preorder(2 * index + 1); 이 함수로 넘어 가더라구요. 이유가 무엇인가요? if 문이 false 이니까 자동 적으로 preorder 함수가 끝나야 하는 것 아닌가요?

    preorder(2 * index); 
    (index == 8) -> 
    preorder(16);
    if(aTree[index] != null)  == false -> 
    preorder(2 * index + 1);  -> 
    preorder(17) -> 
    if(aTree[index] != null)  == false -> 
    preorder(2 * index + 1); -> 
    preorder(4) 
    

    로 함수가 넘어가는건지 이유가 뭔가요? 제 머리로는 도저히 이해가 안돼요,,

  • 프로필 알 수 없는 사용자님의 편집
    날짜2021.05.06

    자바 재귀 호출 (초보)


    public void preorder(int index) { // 내용 작성 if(aTree[index] != null) { System.out.print(aTree[index]); preorder(2 * index); preorder(2 * index + 1); } }

    간단한 트리 전위 순회 함수 입니다. 배열은 32 크기 사이즈 오브젝트 배열로, 입력 index 는 1입니다. aTree[12] 부터 null 값입니다. 제가 궁금한 것은 디버깅 해보니까 index 가 16이 되어서 if 문이 false 가 되었을때 다시 preorder(2 * index + 1); 이 함수로 넘어 가더라구요. 이유가 무엇인가요? if 문이 false 이니까 자동 적으로 preorder 함수가 끝나야 하는 것 아닌가요? 왜 preorder(2 * index); (index == 8) -> preorder(16); if(aTree[index] != null) == false -> preorder(2 * index + 1); -> preorder(17) -> if(aTree[index] != null) == false -> preorder(2 * index + 1); -> preorder(4) 로 함수가 넘어가는건지 이유가 뭔가요? 제 머리로는 도저히 이해가 안돼요,,