#include <stdio.h>
void HanoiTowerMove(int num, char A, char B, char C)
{
if(num == 1)
{
printf("원반1을 %c에서 %c로 이동 \n", A, C);
}
else
{
HanoiTowerMove(num-1, A, C, B);
printf("원반 %d을(를) %c에서 %c로 이동 \n", num, A, C);
HanoiTowerMove(num-1, B, A, C);
}
}
int main(void)
{
HanoiTowerMove(3, 'A', 'B', 'C');
return 0;
}
인터넷에서 쉽게 떠돌아다니는 하노이타워 코드인데 봐도봐도 이해가 안가네요..
1. main함수에 접근
2. HanoiTowerMove함수를 호출 (초기값 3, A, B, C)
3. num의 값이 3이니까 else의 HanoiTowerMove(num-1, A, C, B); 를 실행하지만 재귀해야함. (현재 num값 2)
4. num의 값이 2이니까 else의 HanoiTowerMove(num-1, A, C, B); 를 실행하지만 재귀해야함. (현재 num값 1)
5. num의 값이 1 이기 때문에 if의 printf를 출력
여기까지는 이해했는데
여기서 이 소스코드는 끝나야하는거 아닌가요 ??
왜 결과창에서 2번째줄부터 7번째줄까지가 출력될 수 있는거죠 ?..