Algoritma
dengan teknik Working-Backward :
1.
Pindahkan (n-1) piringan-piringan atas ke pilar antara.
2.
Pindahkan piringan terakhir ke pilar tujuan
3.
Ulangi 2 dan 3, hingga selesai.
Disebut teknik Working-Backward, karena berjalan mundur dahulu, yaitu :
1. Untuk memindahkan n piringan, pikirkan dahulu cara
memindahkan (n-1) piringan.
2.Ulangi langkah 2 untuk (n-1),(n-2),...
3. Pindahkan 1 piringan, yaitu piringan terakhir.
Dalam pemecahan Menara Hanoi ini, tersirat pemecahan dengan teknik Sub-Goal !
Contoh penggunaan Cara Rekursif pada masalah Menara Hanoi
Menara
(int N, char Awal, char Akhir, char Antara)
{
If (N==1)
printf (“Pindahkan 1 dari : %c ke
%c\n”,Awal,Akhir);
else {
Menara (N-1,Awal,Antara,Akhir);
printf (”Pindahkan %d dari %c ke %c\n”,
N, Awal, Akhir);
Menara(N-1, Antara, Akhir, Awal);
}
}
void
main()
{
int N;
cout << ”Banyak Piringan
? ”;
cin >> N ;
Menara(N,’L’,’R’,’M’); /*Left, Right, Middle*/
}.
Tidak ada komentar:
Posting Komentar