*재귀 호출
재귀 호출(recursive call)문제는 프로그래머들을 힘들게 한다.
재귀 호출이란 프로그램이 자신을 실행하게 하는 것이라고 할 수 있다.
A라는 프로그램이 있다고 하자.
이 A라는 프로그램이 실행되고 있는 중간에 A 안에서 다시 A를 실행하도록 하는 것이다.
'자신이 자신을 부른다' 또는 '프로그램이 자신을 다시 실행하게 한다' 라는 것이 재귀 호출의 개념이다.
재귀 호출이 워낙 다양한 해법을 만드는 일에 쓰이기 때문에 프로그래머라면
재귀 호출의 중요성을 모르지는 않을 것이다.
문제는 이 재귀 호출의 개념을 정립하기가 쉽지 않다는 데에 있다.
비교적 훈련된 프로그래머들도 재귀 호출을 제대로 이용하지 못하는 경우가 있다.
재귀 호출을 사용하면 간단하게 해결 될 문제를, 재귀 호출을 제대로 사용할 줄 몰라서
수천 줄이나 되는 복잡한 프로그램으로 만드는 경우도 있는 것이다.
이 재귀 호출에 대한 개념을 프로그램을 많이 작성하였다고 정립되는 것은 아닌 것 같다.
그럴 것 같으면 오랜 경력을 지닌 프로그래머가 재귀 호출을 잘 활용하여야 하는데 그렇지는 않기 때문이다.
그렇다면 어떤 프로그래머가 재귀 호출에 대한 개념을 정확히 이해하고 잘 활용할까?
나의 관측으로는 놀랍게도 게임을 즐기는 사람들이 그러했다.
게임 속에는 재귀 호출이 다양하게 숨어 있다.
이런 게임 중에서도 하노이 탑 게임을 재귀 호출의 진수를 보여준다.
하노이탑 게임을 즐기는 사람은 자신도 모르게 재귀 호출에 대해서 익히는 것이 된다.
자, 지금부터 하노이탑 게임을 즐겨보자.
그리고 만약 시간이 있다면 하노이탑 프로그램을 직접 작성해 보도록 하자.
2010년 08월 30일 18시 02분 49초