MulaiMulai sekarang secara gratis

Menara Hanoi

Dalam latihan ini, Anda akan mengimplementasikan teka-teki Menara Hanoi dengan algoritme rekursif. Tujuan permainan ini adalah memindahkan semua cakram dari salah satu dari tiga batang ke batang lainnya, dengan mengikuti aturan berikut:

  • Anda hanya boleh memindahkan satu cakram pada satu waktu.
  • Anda hanya boleh mengambil cakram paling atas dari salah satu tumpukan dan meletakkannya di atas tumpukan lain.
  • Anda tidak boleh menaruh cakram yang lebih besar di atas cakram yang lebih kecil.

Picture of the game Tower of Hanoi

Algoritme yang ditampilkan merupakan implementasi permainan ini dengan empat cakram dan tiga batang bernama 'A', 'B', dan 'C'. Kode berisi dua kesalahan. Bahkan, jika Anda menjalankannya, konsol akan macet karena melebihi kedalaman rekursi maksimum. Dapatkah Anda menemukan bug-nya dan memperbaikinya?

Latihan ini adalah bagian dari kursus

Struktur Data dan Algoritma di Python

Lihat Kursus

Petunjuk latihan

  • Perbaiki kasus dasar.
  • Perbaiki pemanggilan fungsi hanoi().

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

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)
Edit dan Jalankan Kode