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

Popular posts from this blog

Tugas B.Indo "Struktur Berita"