Fungsi Rekursif Dasar Pemrograman
Fungsi Rekursif Fungsi Rekursif : fungsi yang memanggil dirinya sendiri Pemanggilan fungsi : Dari fungsi main Dari fungsi lain Dari fungsi itu sendiri Rekursif
Rekursif Generative Structural Memecah masalah besar menjadi masalah-masalah kecil Structural Biasa untuk pengolahan data, terutama struktur data tree
rekursif() Fungsi Rekursif rekursif() … void rekursif() { rekursif(); } int main() { rekursif() rekursif() main() rekursif()
Kegunaan Fungsi rekursif digunakan untuk menyelesaikan masalah yang kompleks dengan cara “membelah” menjadi potongan-potongan kecil yang sederhana (Generative) Structural : rekursif untuk struktur data tertentu, contohnya Tree
Perlu diperhatikan Tidak semua masalah bisa diselesaikan secara rekursif Fungsi rekursif biasanya lebih lambat Fungsi rekursif harus memiliki titik berhenti Jumlah maksimal tingkat rekursif ditentukan oleh sistem operasi
Contoh function rekursif
Hasil program
Kasus : Faktorial 5! = 5 x 4 x 3 x 2 x 1 = 5 x 4! 1! = 1
Kasus : Faktorial 5! = 5 x 4! 4! = 4 x 3! 3! = 3 x 2! 2! = 2 x 1! Titik berhenti 3! = 3 x 2! 2! = 2 x 1! 1! = 1 5! = 5 x 4 x 3 x 2 x 1
Kasus : Faktorial faktorial(5) hasilnya : 120
Contoh program Titik berhenti Rekursif
Hasil program
Rekursif vs Iteratif Pola rekursif adalah konstruksi program fungsional yang didasari oleh definisi rekurens persoalan Pola iteratif adalah bagaimana membuat sebuah pengulangan dengan memanfaatkan menjadi sebuah aplikasi rekursif. Pada pola iteratif, hasil disebut sebagai akumulator, dimana pada aplikasi rekursif mencapai basis, akan berhenti dan akumulator tersebut harus berisi nilai komputasi yang diinginkan
Tabel perbandingan Pokok persoalan Versi Rekursif Versi Iteratif Bentuk teks program rekurens Aplikasi fungsi dalam sebuah ekspresi sesuai dengan definisi Aplikasi fungsi untuk mengubah nilai parameter yang diharapkan akan menampung nilai hasil Basis atau nilai awal Kondisi basis adalah kondisi dimana tidak ada lagi aplikasi rekursif, ekspresi basis adalah awal komputasi: yaitu komputasi mulai dilakukan Kondisi basis adalah kondisi berhenti dan ekpresi basis adalah “peniriman” hasil komputasi lewat parameter Aplikasi Tidak perlu memikirkan awal, inisialisasi, elemen pengontrol. Fokus persoalan adalah bagaiamana melakukan apliasik sebauh fungsi sesuai dengan definisi dan spesifikasinya Harus dipikirkan bagaimana melakukan inisialisasi dan elemen pengontrol supaya kondisi basis tercapai dan nilai hasil diperoleh.
Tabel perbandingan (lanjt.) Pokok persoalan Versi Rekursif Versi Iteratif Pola rekurens Hanya ada satu pola yaitu berdasarkan rekursif persoalan Ada dua pola rekurens. Berdasarkan pencacah, atau berdasarkan kondisi parameter. Yang penting adalah menentukan elemen pengontrol iterasi yang menjamin bahwa suatu saat ietrasi dapat berhenti dan hasil komputasi dapat diperoleh
Kasus Deret Fibonaci Deret fibonacci mempunyai nilai suku-suku bilangan berikut: 0, 1, 1, 2, 3, 5, 8, 13, 21, ............ Ciri khusus deret ini adalah tiap-tiap suku adalah hasil penjumlahan dari nilai dua suku sebelumnya
Kasus Deret Fibonaci untuk mencari bilangan fibonacci ke- 5, maka urutan pengerjaannya adalah sebagai berikut:
Fibo iteratif vs Fibo rekursif
Iteratif vs Rekursif Kesimpulannya.......?