프로그래밍/자료구조

C언어, 재귀함수로 하노이타워 구현하기

gameObject 2023. 10. 24. 00:00
728x90

하노이타워를 C언어로 공부하면서

재귀라는 부분을 실제 코딩을 하며 어떻게 떠올릴 수 있을지가

가장 재미있는 부분이라고 생각했다.

 

실제로 그냥 머리속에서 하노이타워를 어떻게 구현할지 고민할때는

해답이 떠오르지가 않았다.

 

분명히 반복되는 부분이 있을것같은데, 머리속에서 찾을 수가 없었다.

 

윤성우님께서 문제를 내주실때도 알고나면 너무 쉬울것이라고

고민해 보는 시간을 꼭 갖고 해답을 보면 좋을것같다고 하였는데.

 

아니나 다를까 듣자마자, 정말 탁 트이는 기분이 들었다.

 

이제는 하노이타워는 언제든지 구현할 수 있겠다는 생각이 드는데

아직도 프로그래밍을 하다가 재귀를 떠올릴 수 있을것 같다는 확신이 들지는 않는것 같다.

 

반복되는 부분이 있다면 고민 꼭 해보자

void Hanoitower(int num, char from, char by, char to)
{
	if(num == 1)
	{
		printf("%c에서 %c로 이동",from,to);
	}
	else
	{
		Hanoitower(num-1, char from, char to, char by); 
		printf("%d가 %c에서 %c로 이동", num, from, to); 
		Hanoitower(num-1, char by, char from, char to); 
	}
}
728x90