Waktu kuliah Struktur Data sempat enggak ngerti sama menara hanoi. Taunya cuman memindahkan piringan-piringan dari tonggak A ke tonggak C lewat B dengan cara piringan – piringan dari A di pindahin semuanya ke B baru nanti ke C , jadinya yang piringan besar dibawah dan yang kecil diatas
Well, itu ngawur karena malas membaca soalnya . Pas kuliah Analog ketemu lagi sama menara hanoi. Yo wis… saya baca-baca n’ Alhamdulillah ngerti dikit .
Jadi apa sih Menara Hanoi itu ?
Sebuah permainan dimana sejumlah piringan dipindahkan dari tonggak
satu ke tonggak lainnya dan dapat menggunakan tonggak bantuan .
Caranya semua piringan di tonggak A akan dipindahkan ke tonggak C
secara satu persatu dan piringan yang besar tidak boleh diletakkan di
atas piringan yang kecil.
Untuk lebih jelasnya soal prosesnya bisa lihat gambar di bawah ini
Untuk menyelesaikan puzzle di atas dalam pemrograman, kita dapat
menggunakan teknik rekursif. Rekursif adalah fungsi atau prosedure yang
dapat memanggil dirinya sendiri.
Jadi algoritmanya adalah …Kalau N = 1 makacatatan :
N dipindahkan dari A ke C secara langsungTapi kalau N > 1 maka
pindahkan N-1 dari A ke Bpindahkan N dari A ke Cpindahkan N-1 dari B ke C
N = banyaknya piringan
Sekarang kita coba coding dengan c++
1: #include<iostream>
2: using namespace std;
3: void MenaraHanoi(int N, char asal, char bantu, char tujuan);
4: int main()
5: {
6: int piringan;
7: cout<< "\nPROGRAM MENARA HANOI\n";
8: cout<< "--------------------\n\n";
9: cout<< "Banyaknya piringan: ";
10: cin >> piringan;
11: cout<< endl;
12: MenaraHanoi(piringan,'A','B','C');
13: return 0;
14: }
15: void MenaraHanoi(int N, char asal, char bantu, char tujuan)
16: {
17: if(N == 1)
18: cout<<"Piringan 1 dari "<<asal<< " ke " << tujuan <<endl;
19: else
20: {
21: MenaraHanoi(N-1,asal,tujuan, bantu);
22: cout<<"Piringan " << N <<" dari " << asal << " ke " << tujuan<<endl;
23: MenaraHanoi(N-1, bantu, asal, tujuan);
24: }
25: }
sumber: rusdyana.wordpress.com