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 adalah bagian dari kursus
Struktur Data dan Algoritma di Python
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)