생초보가 c언어 하노이탑 재귀호출 질문드립니다.
글쓴이: vltfhem / 작성시간: 토, 2014/05/03 - 7:47오후
#include
void hanoi(int n, int src, int dest);
void main()
{
int num;
printf("Enter the number of Hanoi Tower : ");
scanf("%d", &num);
hanoi(num, 1, 3);
}
void hanoi(int n, int src, int dest)
{
static int count=0;
int middle=6-src-dest;
if (n>1)
hanoi(n-1, src, middle);
printf("%d : disk %d %d->%d\n", ++count, n, src, dest);
if (n>1)
hanoi(n-1, middle, dest);
}
위와 같은 프로그램인데
재 짧은 생각으로는
첫번째로 실행되는
if (n>1)
hanoi(n-1, src, middle);
에서 n이 1이 되어 printf를 실행하고 아래의if문을 실행하지 않고 프로그램이 종료될거라 예상하였지만 그렇지 않더군요..
위 재귀호출이 어떻게 돌아가는지 설명 도움을 주실분이 계신지요 ㅠ
Forums:
가장 간단한 방법
출력 함수를 이용한 원시 디버깅
저는 이렇게 생각했습니다.
댓글 달기