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.

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 merupakan bagian dari kursus
Struktur Data dan Algoritma di Python
Instruksi latihan
- Perbaiki kasus dasar.
- Perbaiki pemanggilan fungsi
hanoi().
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
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)