Kapan menggunakan Loop ? Kapan Menggunakan Rekursif ?

Saya menemukan bacaan yang berguna dan saya pikir kamu juga harus membacanya. Sumber asli ini menggunakan bahasa Inggris dan saya coba untuk menerjemahkannya supaya kamu lebih mudah membacanya. Tapi jika kamu ingin membaca langsung dari sumbernya kamu bisa akses dari link ini Medium Faith Chikwekwe

Kapan menggunakan Loop ? Kapan Menggunakan Rekursif ?


Kebanyakan konsep yang akan dibicarakan nanti menggunakan bahasa pemrograman Python, tapi bisa diterapkan ke banyak bahasa pemrograman lainnya.

Di buku "Cracking the Coding Interview" ada pernyataan "Semua algoritma rekursif dapat diimplementasikan menggunakan iterasi (atau Loop)...", pada bagian buku "Pendekatan teknis pertanyaan interview menggunakan rekursif.".

Dalam kebanyakan bahasa pemrograman memecahkan masalah iteratif biasanya menggunakan For atau While. Loop sangat bagus karena penggunaannya sangat mudah.

Bagaimanapun, terkadang ini bisa menjadi mimpi buruk karena sulit untuk dibaca.

writing code that nobody else can readMencoba menulis kode bersarang (nested code) dan rumit bersamaan dengan tatapan rasa ingin tahu dari pewawancara bisa memberi tekanan ketika wawancara.

Meskipun beralih dari Loop ke rekusif tidak selalu membuat kode mu lebih baik, ini merupakan hal yang bagus untuk kamu miliki di kotak peralatanmu.

Untuk beberapa waktu, Saya sangat takut untuk mempelajari rekursif (kata penulis asli). Setelah tau bahwa penyelesaian rekursif bisa juga dibuat dengan Loop, saya memutuskan untuk selalu menggunakan perulangan setiap menyelesaikan pertanyaan wawancara.

Bagaimanapun, semakin meningkatnya kemampuan technical interview saya, saya menemukan banyak persoalan LeetCode dan Hackerrank yang menyarankan menggunakan rekursif dengan segala ke-kompleksitasan-nya. Sudah saatnya saya menambah peralatan tempur saya.

Apa itu Loop ?

Loop algorithm

Loop digunakan untuk mengulang blok kode program sesuai yang dibutuhkan program tersebut.


Untuk Loop, seperti yang dicontohkan diatas, menelusuri setiap elemen pada list. Kita biasanya menggunakan loop ketika kita tau harus berapa kali kita menjalankan sebuah blok kode. Pada contoh diatas kita hanya perlu 2 baris untuk menelusuri list dan baris ke-3 untuk nomor setiap nama di dalam name_list.

Kita juga mungkin melakukan perulangan sampai suatu kondisi tertentu terpenuhi, ini saat yang tepat untuk menggunakan while.

Contoh penggunaanya adalah saat kita menelusuri isi dari linked list .

Apa itu rekursif ?

Image from https://www.slideshare.net/alhazmy13/data-structures-part5-recursion


Rekursif adalah program yang memanggil dirinya sendiri. Pada gambar diatas fungsi factorial memanggil dirinya sendiri didalam blok kode nya dengan parameter n dikurangi 1.

Fungsi rekursif seperti pada gambar diatas memiliki 2 bagian utama yaitu recursive call dan base case.

Base case adalah blok kode yang mengecek apakah kita sudah sampai pada kondisi untuk keluar dari rekursif atau belum. Setiap fungsi rekursif bisa memiliki satu atau lebih base case. Pada contoh diatas base case nya adalah ketika parameter n sudah sama dengan 0.

Dan juga ketika fungsi rekursif memanggil dirinya sendiri dia akan membentuk sebuah stack LIFO (Last In First Out). Yang berarti item yang terakhir ditambahkan itu yang akan dieksekusi terlebih dahulu.
Stack


Kapan harus menggunakan rekursif ?

Rekursif dibuat untuk menyelesaikan permasalahan yang dapat di pecah menjadi permasalahan kecil. Ini cocok untuk permasalahan yang memiliki banyak cabang dan mungkin terlalu sulit untuk dikerjakan menggunakan Loop.

Contoh nya mungkin pencarian dalam file system. Kamu mulai dari root folder, lalu kamu akan mencari di setiap folder didalamnya.

Searching in file system

Rekursif bekerja sangat baik untuk permasalahan seperti ini. Karena kamu dapat mencari di banyak jalur percabangan tanpa membuat banyak pemeriksaan dan ketentuan yang berbeda di setiap kemungkinan.

Untuk kamu yang familiar dengan struktur data, mungkin kamu mengenali bahwa gambar diatas mirip dengan tipe struktur data tree.

Tree dan Graph mudah ditelusuri menggunakan rekursif.

Haruskah selalu menggunakan rekursif ?

Rekursif sepertinya sangat berguna! Mungkin saya harus menggunakannya sepanjang waktu ?

Seperti yang lainnya, rekursif berguna jika digunakan di saat yang tepat. Rekursif adalah alat yang sangat berguna, tapi akan meningkatkan penggunaan memori.

Menumpuk pemanggilan program pada stack akan memakan banyak memori. Untuk program kecil mungkin ini tidak akan terlalu berdampak. Bagaimanapun, jika programmu mulai memanggil banyak rekursif, mungkin kamu harus mempertimbangkan jika kamu membuat stack yang besar.

Pertimbangan lainnya adalah keterbacaan kode. Kode mu mungkin lebih mudah dibaca jika kamu membuatnya dalam Loop, atau sebaliknya dari Loop lebih mudah dibaca di rekursif.

Comments