개발일기
[Java] 알고리즘 재귀함수 하노이탑
삐삐들의 주인
2023. 2. 11. 10:52
package HanoiExample;
public class Hanoi {
public static void main(String[] args) {
hanotFun("A", "B", "C", 4);
}
public static void hanotFun(String start, String pass, String end, int num) {
//시작지점 start 지나가는 곳 pass 마지막 모이는 곳 end 4개를 옮기겠다
if(num == 1) {
//1혼자 남았을 때는 바로 끝으로 옮긴다
System.out.printf(num + ":%s -> %s\n", start, end);
} else {
hanotFun(start, end, pass, num -1);
System.out.printf(num + ":%s -> %s\n", start, end);
hanotFun(pass,start ,end ,num -1);
}
}
}
결과
num = 1일때 움직임이 일어나고 1이 아닐때는 같은 함수를 또 실행한다
그렇게 1이 나올 때 까지 들어갔다가 1을 만나면 1을 출력한다
else의 첫 함수가 참이 되고 2가 출력 된다 그러고 다시 1로 가서 위치가 바뀌면서 새로 출력된다
참이 될 때 까지 함수는 계속 안으로 들어가면서 실행이 되고
참이 되면 해당 함수를 빠져나오고 다음줄을 실행한다
재귀함수 꼭 기억하자