게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C언어 재귀함수 하노이타워 이해가 안가네여..
게시물ID : programmer_14386짧은주소 복사하기
작성자 : 옛날소면
추천 : 0
조회수 : 728회
댓글수 : 4개
등록시간 : 2015/11/11 21:51:44
#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;
}

13.JPG


인터넷에서 쉽게 떠돌아다니는 하노이타워 코드인데 봐도봐도 이해가 안가네요..

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번째줄까지가 출력될 수 있는거죠 ?..

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호