재귀함수라는 부분에서요..
2008-10-26
|
by 자바공부
2150
선생님 안녕하세요.
프로그램을 공부하고 있는 사람입니다.
다름이 아니라.. 재귀함수라는 부분에 대해 정말 답답해서 질문을 드리게 되었습니다.
자바로 이것저것 알고리즘을 구현해 보다가..
재귀함수로 하노이의 탑을 구현하는 부분에서 정말 도저히 구조가 잡히지를
않아서 답답해 죽겠어요 ㅠ
public class Main {
public static void main(String ar[]) {
hanoi(5,A,B,C);
}
public static void hanoi(int n, char a, char b, char c) {
if(n == 1)
System.out.printf("%c->%c\n",a,c);
else {
hanoi(n - 1, a,c,b);
System.out.printf("%c->%c\n",a,c);
hanoi(n - 1,b,a,c);
}
}
선생님 정말 어떻게 정리를 하고 지나가야 할지 너무 답답합니다..
선생님께서 올리신 답변을 보면 명쾌하지 정리를 해 주실수 있을거라는..
기대를 가지고 질문을 올리게 되었습니다.
특히 hanoi(n-1,a,c,b); 와 hanoi(n-1,b,a,c); 코드 부분을 어떤 관점으로
바라보고 해석을 해야 할지 답답하기만 합니다..
코드상으로 풀어놓았을때
도대체 어떤 규칙을 가지고 저렇게 코딩이 되었는가..
정말 정리하기가 힘듭니다..
n의 값이 10이건 100이건 아무 문제없이 문제정리가 되어야 하는데..
일반화를 시키지 못해서 너무 혼란스럽기까지 합니다.
답변을 좀 부탁드리겠습니다.