티스토리 뷰

개발일기

[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로 가서 위치가 바뀌면서 새로 출력된다

참이 될 때 까지 함수는 계속 안으로 들어가면서 실행이 되고

참이 되면 해당 함수를 빠져나오고 다음줄을 실행한다

 

재귀함수 꼭 기억하자

공지사항
최근에 올라온 글
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31