Home > JAVA > Menara hanoi dengan rekursif

Menara hanoi dengan rekursif

Penjelasan tentang menara hanoi bisa didapatkan di sini. Sedikit iseng saya mau share penyelesaian menara hanoi menggunakan teknik rekursif (yang paling umum) menggunakan Java. Aturan yang paling mendasar adalah cakram yang lebih besar tidak boleh ada di atas cakram yang lebih kecil.

Secara garis besar kita dapat membagi penyelesaiannya menjadi 3 garis besar:

  1. Pindahkan n-1 cakram terkecil dari tiang  A(sumber) ke tiang C(perantara). Di sini kita gunakan rekursif.
  2. Setelah semua cakram yg lebih kecil pindah, kita pindahkan cakram terbesar ke tiang  B(tujuan).
  3. Pindahkan cakram-cakram yang lebih kecil ke tiang  B. Di sini kita gunakan rekursif.

Misalnya kita memiliki 3 cakram, tiang A(sumber), tiang B(tujuan), tiang C(perantara)

  1. Pindahkan cakram 1 dari tiang A ke tiang B
  2. Pindahkan cakram 2 dari tiang A ke tiang C
  3. Pindahkan cakram 1 dari tiang B ke tiang C
  4. Pindahkan cakram 3 dari tiang A ke tiang B
  5. Pindahkan cakram 1 dari tiang C ke tiang A
  6. Pindahkan cakram 2 dari tiang C ke tiang B
  7. Pindahkan cakram 1 dari tiang A ke tiang B

public class HanoiRecursiveOne {

public static void main(String[] args) {
 moveTower(3, 'A', 'B', 'C');
 }

 static void moveTower(int disk, char sumber, char tujuan, char perantara){
 if(disk == 0){
 return;
 }else{
 moveTower(disk-1, sumber, perantara, tujuan);
 System.out.println("Pindahkan cakram " + disk + " dari " + sumber + " ke " + tujuan);
 moveTower(disk-1, perantara, tujuan, sumber);
 }
 }

}

Categories: JAVA
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: