Animated Hanoi
Hello, World!
Hello, guys! Well, it feels like it has almost been forever since the last time I interact with you all. For today's material, I want to talk about recursion in java, especially its implementation on tower of hanoi. As usual, since it would be read by my lecturer, I need to write this article in bahasa. So for those who seek an article in english, I invite you to kindly click the source link I've already put below the article.
Apa itu Tower of Hanoi?
Tower of Hanoi atau dalam bahasa Indonesia lebih dikenal dengan nama Menara Hanoi merupakan sebuah permainan yang meminta pemainnya untuk memindahkan blok berbentuk lingkaran yang membentuk menara, memindahkan ke lokasi lain, namun blok lingkaran besar selalu ahrus di bawah blok lingkaran kecil.
Ada beberapa peraturan yang ahrus diikuti dalam bermain Menara Hanoi, yaitu sebagai berikut.
- Hanya satu blok yang boleh dipindah ke kolom lain pada waktu tertentu
- Setiap tindakan dilakukan dengan memindah blok teratas dari sembarang kolom untuk dipindah ke kolom lain.
- Hanya boleh meletakkan blok yang lebih kecil di atas blok yang lebih besar
Bila didefinisikan a (a = asal), t (t = tujuan), s (s = sementara), dan h adalah jumlah piringan, dibawah ini merupakan prosedur singkat mengenai cara pemindahan sebuah piringan dari a ke t dengan s untuk membantu.
- Langkah 1 : Bila h>1, gunakan prosedur ini untuk memindahkan h – 1 piringan dari a ke s.
- Langkah 2 : Sekarang piringan yang lebih besar. Piringan ke h – 1 dipindahkan dari a ke t.
- Langkah 3 : Bila h>1, gunakan prosedur ini untuk memindahkan h – 1 piringan dari s ke t.
Asumsikan terdapat sebuah fungsi untuk mencari solusi Tower of Hanoi dengan 4 argumen, yaitu jumlah piringan (n) dan 3 tonggak (a, t, dan r). Fungsi algoritmiknya sebagai berikut
Solve (n, a, r, t)
if (n = 0)
exit else
Solve (n - 1, a, t, r)
Move from a to t
Solve (n - 1, r, a, t)
Fungsi diatas merupakan fungsi sederhana Solve. Fungsi merupakan fungsi rekursif karena memanggil dirinya sendiri dengan nilai n yang terus berkurang hingga nilai n mencapai 0. Secara implisit, penulisan fungsi diatas untuk n = 3
Comments
Post a Comment