Algorithm(알고리즘)/재귀함수
7) 하노이의 탑
반응형
7. 하노이의 탑
def move_disk(disk_num, start_peg, end_peg):
print("%d번 원판을 %d번 기둥에서 %d번 기둥으로 이동" % (disk_num, start_peg, end_peg))
def hanoi(num_disks, start_peg, end_peg):
if num_disks == 0:
return
else:
other_peg = 6 - start_peg - end_peg
# 1. 가장 큰 원판을 제외하고 나머지 원판들을 start_peg에서 other_peg로 이동
hanoi(num_disks - 1, start_peg, other_peg)
# 2. 가장 큰 원판을 start_peg에서 end_peg로 이동
move_disk(num_disks, start_peg, end_peg)
# 3. 나머지 원판들을 other_peg에서 end_peg로 이동
hanoi(num_disks - 1, other_peg, end_peg)
# 테스트
hanoi(3, 1, 3)
결과
1번 원판을 1번 기둥에서 3번 기둥으로 이동
2번 원판을 1번 기둥에서 2번 기둥으로 이동
1번 원판을 3번 기둥에서 2번 기둥으로 이동
3번 원판을 1번 기둥에서 3번 기둥으로 이동
1번 원판을 2번 기둥에서 1번 기둥으로 이동
2번 원판을 2번 기둥에서 3번 기둥으로 이동
1번 원판을 1번 기둥에서 3번 기둥으로 이동
2021.05.13 - [Algorithm(알고리즘)/기본] - 1) palindrome : 앞뒤가 같은 단어 찾기 (for문)
반응형
'Algorithm(알고리즘) > 재귀함수' 카테고리의 다른 글
6) 리스트 내 요소 찾는 재귀함수 (0) | 2021.05.13 |
---|---|
5) 파라미터 some_list를 거꾸로 뒤집는 재귀함수 (0) | 2021.05.13 |
4) 각 자릿수의 합 리턴 (재귀함수) (0) | 2021.05.13 |
3) 1부터 n까지의 합을 리턴 (0) | 2021.05.13 |
2) n번째 피보나치 수를 리턴 (재귀함수) (0) | 2021.05.13 |
댓글