Anda di halaman 1dari 5

1.

Menara Hanoi

• Pindahkan n-piringan dari pilar-kiri ke pilar-kanan dengan pilar-tengah


sebagai antara. Piringan yang berada dipilar kiri tersusun sedemikian rupa
sehingga menyerupai menara, yaitu piringan yang lebih kecil selalu berada
diatas piringan yang lebih besar. Pada proses pemindahan piringan-piringan
tersebut, pola susunan menara harus selalu dijaga.

• Alur pemecahan secara rekursif :

1. Pindahkan (n-1) piringan-piringan atas ke pilar antara.

2. Pindahkan piringan terakhir ke pilar tujuan.

3. Ulangi 2 dan 3, hingga selesai

• Simulasikan pemindahan dengan :

– 3 piringan

– 4 piringan

– 5 piringan

• Buat programnya secara rekursif

Jawab :
#include<stdio.h>

void menara(int n,char asal,char tujuan,char antara){


if(n==1)printf("Pindahkan %d dari : %c ke
%c\n",n,asal,tujuan);
else{
menara(n-1,asal,antara,tujuan);
printf("Pindahkan %d dari : %c ke %c\n",n,asal,tujuan);
menara(n-1,antara,tujuan,asal);}}

int main(){
int n;
printf("Banyak Piringan? "); scanf("%d",&n);fflush(stdin);
menara(n,'L','R','M');
getchar();
}

RINCIAN REKURSInya

 3 Piringan
(A)Pindahkan 1,2,3 dari KIRI ke KANAN
(A1) Pindahkan 1,2 dari KIRI ke TENGAH
(A11) Pindahkan 1 dari KIRI ke KANAN
(A12) Pindahkan 2 dari KIRI ke TENGAH
(A13) Pindahkan 1 dari KANAN ke TENGAH
(A2) Pindahkan 3 dari TENGAH ke KANAN
(A3) Pindahkan 1,2 dari TENGAH ke KANAN
(A31) Pindahkan 1 dari TENGAH ke KIRI
(A32) Pindahkan 2 dari TENGAH ke KANAN
(A33) Pindahkan 1 dari KIRI ke KANAN

 4 Piringan

(A)Pindahkan 1,2,3,4 dari KIRI ke KANAN

(A1) Pindahkan 1,2,3 dari KIRI ke TENGAH

(A11)Pindahkan 1,2 dari KIRI ke KANAN

(A111)Pindahkan 1 dari KIRI ke TENGAH

(A112)Pindahkan 2 dari KIRI ke KANAN


(A113)Pindahkan 1 dari TENGAH ke KANAN

(A12)Pindahkan 3 dari KIRI ke TENGAH

(A13)Pindahkan 1,2 dari KANAN ke TENGAH

(A131)Pindahkan 1 dari KANAN ke KIRI

(A132)Pindahkan 2 dari KANAN ke TENGAH

(A133)Pindahkan 1 dari KIRI ke TENGAH

(A2)Pindahkan 4 dari KIRI ke KANAN

(A3)Pindahkan 1,2,3 dari TENGAH ke KANAN

(A31)Pindahkan 1,2 dari TENGAH ke KIRI

(A311)Pindahkan 1 dari TENGAH ke KANAN

(A312)Pindahkan 2 dari TENGAH ke KIRI

(A313)Pindahkan 1 dari KANAN ke KIRI

(A32)Pindahkan 3 dari TENGAH ke KANAN

(A33)Pindahkan 1,2 dari KIRI ke KANAN

(A331) Pindahkan 1 dari KIRI ke TENGAH

(A332) Pindahkan 2 dari KIRI ke KANAN

(A333) Pindahkan 1 dari TENGAH ke KANAN

 5 Piringan

(A)Pindahkan 1,2,3,4,5 dari KIRI ke KANAN

(A1) Pindahkan 1,2,3,4 dari KIRI ke TENGAH

(A11) Pindahkan 1,2,3 dari KIRI ke KANAN

(A111) Pindahkan 1 dari KIRI ke KANAN


(A112) Pindahkan 2 dari KIRI ke TENGAH

(A113) Pindahkan 1 dari KANAN ke TENGAH

(A114) Pindahkan 3 dari KIRI ke KANAN

(A115) Pindahkan 1 dari TENGAH ke KIRI

(A116) Pindahkan 2 dari TENGAH ke KANAN

(A117) Pindahkan 1 dari KIRI ke KANAN

(A12) Pindahkan 4 dari KIRI ke TENGAH

(A13) Pindahkan 1,2,3 dari KANAN ke TENGAH

(A131) Pindahkan 1 dari KANAN ke KIRI

(A132) Pindahkan 2 dari KANAN ke TENGAH

(A133) Pindahkan 1 dari KIRI ke KANAN

(A134) Pindahkan 2 dari TENGAH ke KIRI

(A135) Pindahkan 1 dari KANAN ke KIRI

(A136) Pindahkan 3 dari KANAN ke TENGAH

(A137) Pindahkan 1 dari KIRI ke KANAN

(A138) PIndahkan 2 dari KIRI ke TENGAH

(A139) Pindahkan 1 dari KANAN ke TENGAH

(A2) Pindahkan 5 dari KIRI ke KANAN

(A3) Pindahkan 1,2,3,4 dari TENGAH ke KANAN

(A31) Pindahkan 1,2,3 dari TENGAH ke KIRI

(A311) Pindahkan 1 dari TENGAH ke KIRI

(A312) Pindahkan 2 dari TENGAH ke KANAN

(A313) Pindahkan 1 dari KIRI ke KANAN


(A314) Pindahkan 3 dari TENGAH ke KIRI

(A315) Pindahkan 1 dari KANAN ke TENGAH

(A316) Pindahkan 2 dari KANAN ke KIRI

(A317) Pindahkan 1 dari TENGAH ke KIRI

(A32) Pindahkan 4 dari TENGAH ke KANAN

(A33) Pindahkan 1,2,3 dari KIRI ke KANAN

(A331) Pindahkan 1 dari KIRI ke KANAN

(A332) Pindahakn 2 dari KIRI ke TENGAH

(A333) Pindahkan 1 dari KANAN ke TENGAH

(A334) Pindahkan 3 dari KIRI ke KANAN

(A335) Pindahkan 1 dari TENGAH ke KIRI

(A336) Pindahkan 2 dari TENGAH ke KANAN

(A337) Pindahkan 1 dari KIRI ke KANAN

Anda mungkin juga menyukai