Pengertian Rekursi
Rekursi adalah sebuah teknik dalam pemrograman di mana sebuah fungsi memanggil dirinya sendiri untuk menyelesaikan masalah yang lebih besar dengan cara memecahnya menjadi sub-masalah yang lebih kecil. Proses ini akan berhenti ketika mencapai kondisi dasar (base case), di mana fungsi tidak lagi memanggil dirinya sendiri.
Contoh Rekursi
Faktorial dari sebuah angka n (n!) dapat didefinisikan secara rekursif:
unsigned int factorial(unsigned int n) { if (n == 0) { return 1; } else { return n * factorial(n-1); } }
Kelebihan dan Kekurangan Rekursi
Kelebihan: Menyederhanakan masalah kompleks, mudah digunakan untuk struktur data hierarkis.
Kekurangan: Lebih boros memori karena menimbulkan tumpukan pemanggilan fungsi (stack). Jika tidak ada kondisi dasar bisa menyebabkan stack overflow.
sumber : www.lawencon.com, www.alwin.id, id.wikipedia.org
Pengertian Algoritma Greedy
Algoritma greedy adalah algoritma yang berusaha menemukan solusi dengan membuat keputusan terbaik pada setiap langkah, tanpa memperhatikan konsekuensi ke depan. Prinsip utamanya adalah memilih opsi optimum lokal pada setiap langkah dengan harapan solusi akhir adalah optimum global.
Cara Kerja
Pada setiap langkah, algoritma greedy memilih satu solusi terbaik (optimum lokal) dan melanjutkan proses tersebut hingga seluruh solusi ditemukan.
Contoh Algoritma Greedy
Misalkan ingin menukar uang sebesar 32 menggunakan koin 1, 5, 10, dan 25:
Langkah 1: ambil koin 25 (total 25) Langkah 2: ambil koin 5 (total 30)
Langkah 3: ambil dua koin 1 (total 32) Jumlah koin minimum: 4.
sumber : epository.unikom.ac.id, fikti.umsu.ac.id
Pengertian Pemrograman Dinamis
Pemrograman dinamis (dynamic programming) adalah teknik pemrograman yang digunakan untuk memecahkan masalah kompleks dengan membaginya menjadi submasalah yang lebih kecil dan menyimpan hasil dari submasalah agar tidak dihitung ulang.
Cara Kerja pendekatan utama dalam pemrograman dinamis:
Top-Down (Memoization): Memecah masalah besar menjadi lebih kecil secara rekursif, dan hasil submasalah disimpan (cache).
Bottom-Up (Tabulation): Memulai dari submasalah terkecil, kemudian membangun solusi hingga mencapai masalah utama.
Contoh Pemograman Dinamis
Fibonacci dengan Bottom-Up
def fibonacci(n): fib = * (n + 1) fib[1] = 1 for i in range(2, n + 1): fib[i] = fib[i - 1] + fib[i - 2] return fib[n]
sumber : www.codepolitan.com, kumparan.com
Comments
Post a Comment