Logo Koala Skodev mengetik

Skodev

Belajar coding dalam bahasa Indonesia

APA ITU
Rekursif
Pengertian dan Informasi

Pahami rekursi dalam pemrograman. Konsep rekursi dengan bahasa yang sederhana dan ramah untuk pemula, lengkap dengan contoh nyata dan penggunaannya dalam dunia pemrograman

Daftar Isi:

Apa itu rekursif?
Visual kode rekursif
Contoh sederhana rekursi
Contoh penggunaan rekursi di d...
Kapan menggunakan rekursi diba...
Struktur dasar fungsi rekursif
Pentingkah untuk memahami reku...

Dunia programming punya banyak konsep yang bisa bikin kamu pusing :P. Salah satunya adalah konsep rekrusif.

Di halaman ini, saya akan coba menjelaskan apa itu rekursi secara sederhana dan seperti apa contoh penggunaannya di dunia nyata.

apa itu rekursif

Apa itu rekursif?

Rekursif adalah sebuah teknik di pemrograman, di mana sebuah fungsi memanggil dirinya sendiri. Mirip dengan loop (pengulangan), yang kedua tujuannya memanggil aksi yang sama berkali-kali.

Namun rekursi sering digunakan untuk menyelesaikan masalah yang lebih kompleks:

  • yang tidak bisa (sulit) diselesaikan dengan loop biasa
  • atau kode implementasinya akan sangat sulit dibaca jika menggunakan loop (iterasi)

Visual kode rekursif

Contoh sederhana fungsi rekursif yang memanggil dirinya sendiri

function show(image) {
    show(image); // <- memanggil dirinya sendiri "show"
}

Contoh di atas tidaklah lengkap, karena tidak ada kondisi yang menghentikan pemanggilan fungsi. Jika kamu menjalankan kode di atas, terjadilah “infinite loop”.

Infinite loop adalah kondisi ketika program terus menerus melakukan fungsi yang sama tanpa ada kasus yang menghentikannya, yang tentunya terjadi error, stack overflow, atau crash.

Contoh sederhana rekursi

Contoh sederhana penggunaan rekursi bisa dilihat pada kasus “menghitung faktorial pada pelajaran Matematika”.

Catatan: Kita bisa menggunakan loop/iterasi untuk ini, tapi ini hanya contoh sederhana untuk memahami konsep rekursi.

Kita akan melihat contoh yang lebih real nanti di bawah

Sekilas tentang Faktorial pada matematika: Faktorial dari sebuah bilangan adalah hasil perkalian bilangan itu dengan semua bilangan sebelumnya. Misalnya, faktorial dari 5 adalah 5 x 4 x 3 x 2 x 1 = 120.

Maka, untuk menghitung faktorial dari sebuah bilangan, kita bisa menggunakan rekursi. Kita bisa membuat fungsi yang memanggil dirinya sendiri dengan parameter yang lebih kecil, sampai parameter bernilai 1.

function factorial(n) {
    if (n == 1) { // <- Penting untuk menentukan kondisi berhenti
        return 1;
    } else {
        return n * factorial(n - 1); // <- Wow! dia panggil factorial lagi!
    }
}

Penjelasan kode:

  • Sebuah fungsi bernama factorial yang menerima parameter “n”
  • PENTING! tentukan kapan kondisi ini berhenti agar tidak terjadi “infinite loop”. Di atas if (n == 1) adalah kondisi berhentinya.
  • Bagian rekustif terletak pada else, di mana kita memanggil fungsi factorial lagi dengan parameter yang lebih kecil. return n * factorial(n - 1)

Jika program di atas di jalankan, contoh dengan angka 5, maka yang terjadi

 factorial(5) // contoh memanggil
    return 5 * factorial(4) // 5 * 4 = 20
        return 4 * factorial(3) // 20 * 3 = 60
            return 3 * factorial(2) // 60 * 2 = 120
                return 2 * factorial(1) // 120 * 1 = 120
                    return 1 // kondisi berhenti

sehingga, hasilnya adalah 120.

Contoh penggunaan rekursi di dunia nyata

Berikut beberapa kasus di dunia nyata, di mana rekursi bisa digunakan:

1. Navigasi file / subfolder

Sistem operasi seperti Windows, Mac, dan Linux menggunakan struktur pohon untuk menyimpan file dan folder.

Contoh struktur folder:

user/
    desktop
        /screenshot.png
    documents
        /pictures
            /gambar.png
        /music
            /rock
            /pop
                /lagu.mp3

Jika kamu ingin mencari file atau folder tertentu di dalam struktur ini, kamu bisa menggunakan rekursi.

  • Jika ada folder cari file
  • JIka file ketemu atau tidak ada folder lagi, berhenti
  • Jika ada folder, masuk ke dalam folder dan ulangi langkah pertama (Rekursif)

2. Web crawling

Web crawler (seperti yang digunakan oleh mesin pencari) bisa menggunakan rekursi. Dimulai dari sebuah halaman, crawler akan menemukan semua halaman yang terhubung, dan kemudian untuk setiap halaman yang terhubung, crawler akan memanggil dirinya sendiri.

Proses ini akan terus berlanjut sampai semua halaman yang bisa diakses telah dikunjungi atau batas kedalaman tertentu tercapai.

contoh penggunaan rekursif

3. Komentar / thread

Jika kamu pernah menggunakan situs seperti Reddit atau forum yang memungkinkan komentar bersarang (komentar di bawah komentar), rekursi adalah teknik yang digunakan.

Kamu bisa membuat fungsi yang menampilkan komentar, dan kemudian memanggil dirinya sendiri untuk setiap balasan komentar. Ini akan terus berlanjut sampai semua balasan komentar ditampilkan.

4. Generative Art

Generative art adalah seni yang dibuat dengan kode. Hubungan antara Generative Art dan rekursi dapat dilihat dalam pembuatan karya seni yang melibatkan pola berulang dan fraktal. Sebuah algoritma rekursif bisa digunakan dalam seni generatif untuk menciptakan struktur yang kompleks dan menarik secara visual dari pola sederhana yang berulang.

Kita bisa melihat pola umum dari ketiga kasus di atas. Ketika masalahnya seperti pohon yang punya beberapa sub cabang, rekursi bisa digunakan untuk menyelesaikannya.

Kapan menggunakan rekursi dibanding loop (iterasi) ?

Rekursi dan loop (iterasi) adalah dua teknik yang sering digunakan untuk melakukan aksi yang sama berkali-kali.

Jika kamu bisa menyelesaikan program dengan loop, maka gunakan loop saja. Karena loop lebih sederhana dan lebih efisien.

Secara memori dan performa, rekursi lebih mahal dibanding loop. Karena setiap pemanggilan fungsi akan menambahkan data ke dalam stack, dibanding langsung mengeksekusinya.

Namun, ada beberapa kasus seperti yang disebutkan di atas, di mana rekursi bisa digunakan untuk menyelesaikan masalah yang lebih kompleks, yang tidak bisa atau sulit diselesaikan dengan loop biasa.

Atau terkadang jika harus menggunakan loop biasa, maka kodenya jadi sulit dibaca. Maka, rekursi bisa digunakan untuk membuat kode lebih mudah dibaca.

Selalu ada tradeoff dalam dunia programming.

Struktur dasar fungsi rekursif

  • Base Case
  • Recursive Case

Base Case

Base case adalah kondisi yang menentukan kapan rekursi harus berhenti. Jika tidak ada base case, maka akan terjadi infinite loop.

Recursive Case

Recursive case adalah bagian rekursif, di mana fungsi memanggil dirinya sendiri.

Pentingkah untuk memahami rekursif?

Konsep programming apa saja penting dan suatu saat bisa berguna untuk kamu.

Selain bisa digunakan dalam kasus tertentu, bisa jadi pertanyaan seputar rekursi muncul dalam wawancara kerja.


Daftar newsletter skodev masukkan emailmu untuk dapat informasi menarik dari dunia koding