시도하는코딩
247
2019-11-14 23:14:32
1
346

하노이 탑 실행 순서


void ha(int n,char A[],char B[],char C[])

{

if(n==1)

       printf("Disc %d move : %s->%s",n,A,C);

else

{

      ha(n-1,A,C,B);

      printf("Disc %d move : %s->%s",n,A,C); 

      ha(n-1,B,A,C);

}

}

함수 호출 ha(3,"left","middle","right");

이러한 하노이 탑 코드가 있는데 재귀함수가 익숙하지가 않아서 어떠한 순서대로 어디를 거쳐서 가는지 세세한 과정을 몰라서 이해가 잘 가질 않습니다.

함수대로 라면 n자리에 3이 가서 else부분으로 가서 재귀함수를 두번 쓰게되는데 그사이에 출력이 언제되는지도 잘 모르겠고, 구조자체가 잘 이해가 가지않는 것 같습니다. 고수분들이 자세히좀 알려주시면 감사하겠습니다.

0
  • 답변 1

  • 아무르
    507
    2019-11-15 05:57:18 작성 2019-11-15 06:15:48 수정됨

    n = 100이라면 99..98..1?..97..96..1? 식이 아니라 99..1?..98..1?..97..1?같이 1으로 줄어들때까지 계속 hanoi 함수를 call합니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.