본문 바로가기

+ 컴퓨터/C

[C언어] 재귀함수를 이용한 하노이 탑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>

void hanoi(int n, char from, char tmp, char to);

void main()
{
	
	int n;

	printf("층 수:");
	scanf("%d",&n);

	hanoi(n,'A','B','C');

}

void hanoi(int n, char from, char tmp, char to)	
{	
	if(n==1)
	{
		printf("%d번째 판을 판 %c에서 판 %c로 이동 \n",n, from, to);		//n이 1일때 바로 c로 이동하도록.
	}
	else
	{
		hanoi(n-1, from, to, tmp); //첫번째 재귀 : n이 1이 아닐때. tmp에 다 오도록 함
		printf("%d번째 판을 판 %c에서 판 %c로 이동 \n",n, from, to); //다음출력
		hanoi(n-1, tmp, from, to);	//두번재 재귀 : tmp에서 to에 다 오도록 함
		
	}
}