Programming/Data Structure and Algorithm

하노이탑 c언어 예제 (자료구조)

fishersheep 2021. 12. 23. 15:07
반응형

하노이탑 코드

비록 짧은 코드이지만 재귀함수를 이해하는데 도움이 많이 되는 것 같습니다.

저는 처음봤을때 머리로 한번에 이해가 되지않아서 한단계씩실행하여 과정을 천천히 이해했습니다. 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

void Hanoi(int num, char from, char by, char to) {

	if (num == 1)
		printf("원반1을 %c에서 %c로 이동\n", from, to);
	else {
		Hanoi(num - 1, from, to, by);
		printf("원반%d를 %c에서 %c로 이동 \n", num, from, to);
		Hanoi(num - 1, by, from, to);
	}

}

int main()
{	
	Hanoi(3, 'A', 'B', 'C');
	return 0;
}

Hanoi(num - 1, from, to, by); 은 제일 아래에 있는 원판을 제외한 나머지 원판을 A에서 B로 이동하기 위한 과정이며,

Hanoi(num - 1, by, from, to); 은 제일 아래에 있는 원판을 제외한 나머지 원판을 B에서 C로 이동하기 위한 과정입니다.

참고: 윤성우의 열혈자료구조

반응형