Вежі Ханої
У цій вправі ви реалізуєте головоломку Вежі Ханої за допомогою рекурсивного алгоритму. Мета гри — перенести всі диски з одного з трьох стрижнів на інший, дотримуючись таких правил:
- Можна переміщувати лише один диск за раз.
- Можна брати тільки верхній диск з однієї зі стопок і класти його зверху на іншу стопку.
- Не можна класти більший диск на менший.

Наведений алгоритм — це реалізація цієї гри з чотирма дисками та трьома стрижнями з назвами «A», «B» і «C». У коді є дві помилки. Якщо запустити його, консоль аварійно завершує роботу, бо перевищено максимальну глибину рекурсії. Чи зможете ви знайти та виправити ці помилки?
Ця вправа є частиною курсу
Структури даних і алгоритми в Python
Інструкції до вправи
- Виправте базовий випадок.
- Виправте виклики функції
hanoi().
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
def hanoi(num_disks, from_rod, to_rod, aux_rod):
# Correct the base case
if num_disks >= 0:
# Correct the calls to the hanoi function
hanoi(num_disks, from_rod, aux_rod, to_rod)
print("Moving disk", num_disks, "from rod", from_rod,"to rod",to_rod)
hanoi(num_disks, aux_rod, to_rod, from_rod)
num_disks = 4
source_rod = 'A'
auxiliar_rod = 'B'
target_rod = 'C'
hanoi(num_disks, source_rod, target_rod, auxiliar_rod)