Source Code Program Menara Hanoi Menggunakan C#
Menara Hanoi adalah salah satu masalah rekursi klasik dalam dunia pemrograman. Konsepnya sederhana, tetapi butuh pemahaman rekursi yang kuat untuk menyelesaikannya. Di artikel ini, kita akan membahas:
✅ Apa itu Menara Hanoi?
✅ Bagaimana algoritmanya bekerja?
✅ Source code lengkap menggunakan C#
Yuk, langsung kita bahas!
Apa Itu Menara Hanoi?
Menara Hanoi adalah permainan matematika yang terdiri dari:
- Tiga tiang (A, B, C)
- Sejumlah cakram dengan ukuran berbeda
- Aturan permainan:
- Hanya satu cakram yang boleh dipindahkan dalam satu waktu.
- Tidak boleh menempatkan cakram besar di atas cakram kecil.
- Harus memindahkan semua cakram dari tiang awal (A) ke tiang tujuan (C).
Misalnya, kalau kita punya 3 cakram, langkah-langkah pemindahannya bisa terlihat seperti ini:
- Pindahkan cakram 1 dari A → C
- Pindahkan cakram 2 dari A → B
- Pindahkan cakram 1 dari C → B
- Pindahkan cakram 3 dari A → C
- Pindahkan cakram 1 dari B → A
- Pindahkan cakram 2 dari B → C
- Pindahkan cakram 1 dari A → C
Untuk N cakram, jumlah langkah minimum = ( 2^N - 1 ).
Source Code Menara Hanoi Menggunakan C#
using System;
class MenaraHanoi
{
// Fungsi rekursif untuk memindahkan cakram
static void Hanoi(int jumlahCakram, char asal, char tujuan, char bantu)
{
if (jumlahCakram == 1)
{
Console.WriteLine($"Pindahkan cakram dari {asal} ke {tujuan}");
return;
}
// Pindahkan n-1 cakram dari asal ke tiang bantu
Hanoi(jumlahCakram - 1, asal, bantu, tujuan);
// Pindahkan cakram terbesar ke tujuan
Console.WriteLine($"Pindahkan cakram dari {asal} ke {tujuan}");
// Pindahkan n-1 cakram dari tiang bantu ke tujuan
Hanoi(jumlahCakram - 1, bantu, tujuan, asal);
}
static void Main()
{
Console.Write("Masukkan jumlah cakram: ");
int jumlahCakram = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("\nLangkah-langkah pemindahan:");
Hanoi(jumlahCakram, 'A', 'C', 'B');
Console.WriteLine($"\nTotal langkah yang diperlukan: {Math.Pow(2, jumlahCakram) - 1}");
}
}
Penjelasan Kode
📌 Hanoi(jumlahCakram, asal, tujuan, bantu)
→ Fungsi rekursif untuk memindahkan cakram dari tiang asal ke tujuan, menggunakan bantu sebagai perantara.
📌 Base Case:
→ Jika jumlah cakram hanya 1, langsung pindahkan ke tiang tujuan.
📌 Recursive Case:
→ Pindahkan n-1 cakram ke tiang bantu.
→ Pindahkan cakram terbesar ke tujuan.
→ Pindahkan n-1 cakram dari tiang bantu ke tujuan.
📌 Console.WriteLine()
→ Menampilkan langkah-langkah perpindahan cakram ke layar.
Contoh Output Program
Jika kita menjalankan program dengan 3 cakram, hasilnya seperti ini:
Masukkan jumlah cakram: 3
Langkah-langkah pemindahan:
Pindahkan cakram dari A ke C
Pindahkan cakram dari A ke B
Pindahkan cakram dari C ke B
Pindahkan cakram dari A ke C
Pindahkan cakram dari B ke A
Pindahkan cakram dari B ke C
Pindahkan cakram dari A ke C
Total langkah yang diperlukan: 7
✅ Program berhasil menyelesaikan Menara Hanoi untuk 3 cakram dalam 7 langkah! 🎉
Kenapa Menggunakan Rekursi?
Menara Hanoi adalah masalah yang sangat cocok untuk rekursi karena:
- Bisa dibagi menjadi sub-masalah yang lebih kecil.
- Setiap langkah bergantung pada hasil sebelumnya.
- Solusinya lebih bersih dibanding loop biasa.
Kesimpulan
- Menara Hanoi adalah contoh klasik rekursi dalam pemrograman.
- Algoritmanya memindahkan cakram menggunakan tiga tiang, mengikuti aturan tertentu.
- Jumlah langkah minimum untuk menyelesaikan Menara Hanoi = 2N−12^N - 1.
- C# bisa digunakan untuk menyelesaikan Menara Hanoi dengan pendekatan rekursif yang simpel.
Dengan memahami kode ini, kamu sudah mempelajari konsep rekursi yang penting dalam pemrograman C#!