본문 바로가기

+ 컴퓨터/C

[자료구조] C언어로 하노이 탑 짜기 - 재귀함수(Recursive function) 이용

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);    //n1일때 바로 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에 다 오도록 함
    
  }
}