Rekursif (Recursion) pada Bahasa Pemrograman C#
Dalam pemrograman, rekursif (recursion) adalah konsep di mana sebuah fungsi memanggil dirinya sendiri untuk menyelesaikan tugas tertentu. Rekursi sering digunakan dalam perhitungan matematika, pemrosesan struktur data seperti pohon (tree), dan algoritma pencarian (searching).
Di artikel ini, kita akan membahas:
✅ Apa itu rekursi di C#?
✅ Bagaimana cara kerja rekursi?
✅ Contoh rekursi dalam program sederhana
✅ Kelebihan dan kekurangan rekursi
Apa Itu Rekursi?
Rekursi adalah teknik pemrograman di mana sebuah fungsi memanggil dirinya sendiri dengan input yang semakin kecil hingga mencapai base case (kondisi berhenti).
💡 Dua bagian utama rekursi:
- Base case → Kondisi yang menghentikan rekursi agar tidak berjalan tanpa batas.
- Recursive case → Kondisi di mana fungsi memanggil dirinya sendiri dengan nilai yang lebih kecil.
Contoh Struktur Rekursi
void Rekursif(int n)
{
if (n == 0) return; // Base case (kondisi berhenti)
Console.WriteLine(n);
Rekursif(n - 1); // Recursive case (memanggil diri sendiri)
}
Kode di atas akan mencetak angka dari n
hingga 1, lalu berhenti ketika mencapai n == 0
.
Contoh Rekursi dalam C#
1. Rekursi untuk Menghitung Faktorial
Faktorial dari n
adalah hasil perkalian semua bilangan dari n
hingga 1
:
n!=n×(n−1)×(n−2)×...×1n! = n \times (n-1) \times (n-2) \times ... \times 1
📌 Contoh faktorial dengan rekursi:
using System;
class Program
{
static int Faktorial(int n)
{
if (n == 1) return 1; // Base case
return n * Faktorial(n - 1); // Recursive case
}
static void Main()
{
Console.Write("Masukkan angka: ");
int angka = Convert.ToInt32(Console.ReadLine());
Console.WriteLine($"Faktorial dari {angka} adalah: {Faktorial(angka)}");
}
}
📌 Penjelasan:
- Jika
n == 1
, fungsi mengembalikan1
(base case). - Jika tidak, fungsi memanggil dirinya sendiri dengan
n-1
(recursive case).
Contoh Output
Masukkan angka: 5
Faktorial dari 5 adalah: 120
✅ Fungsi Faktorial(5)
akan memanggil Faktorial(4)
, lalu Faktorial(3)
, hingga mencapai base case.
2. Rekursi untuk Menghitung Fibonacci
Bilangan Fibonacci adalah deret di mana setiap angka adalah hasil penjumlahan dua angka sebelumnya:
F(n)=F(n−1)+F(n−2)F(n) = F(n-1) + F(n-2)
Contoh deret Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, ...
📌 Kode program Fibonacci dengan rekursi:
using System;
class Program
{
static int Fibonacci(int n)
{
if (n == 0) return 0; // Base case
if (n == 1) return 1; // Base case
return Fibonacci(n - 1) + Fibonacci(n - 2); // Recursive case
}
static void Main()
{
Console.Write("Masukkan jumlah angka Fibonacci: ");
int angka = Convert.ToInt32(Console.ReadLine());
for (int i = 0; i < angka; i++)
{
Console.Write(Fibonacci(i) + " ");
}
}
}
Contoh Output
Masukkan jumlah angka Fibonacci: 7
0 1 1 2 3 5 8
✅ Fungsi Fibonacci()
dipanggil berulang hingga mencapai base case (n == 0
atau n == 1
).
Kelebihan dan Kekurangan Rekursi
✅ Kelebihan Rekursi
- Kode lebih simpel & mudah dibaca, terutama untuk masalah yang bisa dibagi menjadi sub-masalah yang lebih kecil.
- Cocok untuk struktur data hierarkis, seperti pohon biner (binary tree).
- Mempermudah pemecahan masalah yang kompleks, seperti sorting (merge sort, quicksort).
❌ Kekurangan Rekursi
- Bisa menyebabkan Stack Overflow jika tidak memiliki base case atau terlalu dalam.
- Lebih lambat dibandingkan loop biasa, terutama jika tanpa optimasi seperti memoization.
- Menggunakan lebih banyak memori, karena setiap pemanggilan fungsi harus disimpan dalam stack.
Kapan Harus Menggunakan Rekursi?
Gunakan rekursi jika: ✅ Masalah bisa dibagi menjadi sub-masalah yang lebih kecil (misalnya faktorial, Fibonacci).
✅ Struktur data yang diproses berbentuk hierarki (misalnya pohon biner).
✅ Loop biasa terlalu rumit atau sulit diimplementasikan.
Kesimpulan
- Rekursi adalah teknik pemrograman di mana fungsi memanggil dirinya sendiri.
- Setiap rekursi harus memiliki base case agar tidak berjalan tanpa batas.
- Faktorial dan Fibonacci adalah contoh klasik penggunaan rekursi.
- Gunakan rekursi jika masalah bisa dibagi menjadi sub-masalah lebih kecil.
- Loop biasa sering kali lebih efisien dibanding rekursi jika tidak perlu menggunakan struktur hierarki.
Dengan memahami rekursi, kamu bisa menyelesaikan banyak masalah dengan cara yang lebih elegan dan simpel!