ПочатиПочніть безкоштовно

Вежі Ханої

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

  • Можна переміщувати лише один диск за раз.
  • Можна брати тільки верхній диск з однієї зі стопок і класти його зверху на іншу стопку.
  • Не можна класти більший диск на менший.

Picture of the game Tower of Hanoi

Наведений алгоритм — це реалізація цієї гри з чотирма дисками та трьома стрижнями з назвами «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)
Редагувати та запускати код