REKURSI dan ITERASI Beserta Contoh Programnya

PENGERTIAN REKURSI

Rekursi dalah suatu proses yang bisa memanggil dirinya sendiri. Bentuk rekursi merupakan alternatif dari bentuk iterasi atau perulangan. Ada beberapa masalah yang lebih cocok dipecahkan dengan bentuk rekursi. Tetapi secara umum, bentuk rekursi b9iasanya kurang efisien dibandingkan bentuk iterasi karena rekursi memanggil dirinya sendiri sehinggga menyebabkan waktu pemrosesan yang lebih besar dibandingkan bentuk iterasi biasa.

Dalam rekursi sebenarnya terkandung pengertian fungsi, perbedaannya adalah :
1. Rekursi bisa memanggil dirinya sendiri.
2. Fungsi harus dipanggil lewat pemanggila fungsi (function Call ).

Berikut ini adalah syarat - syarat dalam rekursi :
1. Ada titik pemberhentian (stopping state) sebagai pengendali rekursi.
2. Adanya langkah induksi yang menuju pada titik pemberhentian.

PENYELESAIAN MASALAH SECARA REKURSIF

Tidak semua masalah boleh diselesaikan secara rekursif. Masalah yang sesuai diselesaikan secara rekursif adalah masalah yang boleh dipecahkan kepada sub-masalah yang kecil dan mudah untuk diselesaikan. Masalah yang kecil dan boleh diselesaikan ini dinamai rekursif.

Berikut adalah ciri - ciri masalah yang boleh diselesaikan melalui kaidah rekursif :
1. Masalah Boleh dipecahkan kepada sub-masalah yang lebih kecil. Ini dilakukan dengan mengurangkan ukuran masalah menjadi ukuran yang lebih kecil dengan cara memanggil prosedur atau fungsi tersebut berulang kali.
2. Terdapat satu atau beberpa sub-masalah yang cukup kecil dan yang dapat memberikan penyelesaian yang dikenali kes penamat. Penyelesaian kes penamat tidak dilakukan secara rekursif.

Algoritma rekursif biasanya mempunyai pernyataan kawalan, seperti pernyataan if atau pernyataan case.

PROSES REKURSIF
Untuk memahami proses rekursif yang terjadi dalam sebuah fungsi rekursi, perhatikan contoh sederhana untuk menghitung bilangan faktorial dengan cara rekursif :
Rumus Menghitung Bilangan Faktorial
N! = N * (N-1) * (N-2)........X1
0! = 1
1! = 1
4! = 4 * 3 * 2 *1 = 24

Translasi Fungsi Menghitung Faktorial Ke Dalam Bahasa Pemrograman Pascal

Perhatikan bahwa untuk menghitung FAKT(N), maka fungsi harus memanggil nilai FAKT (N-1) yang telah diperoleh. Demikian juga untuk menghitung nilai FAKT (N-1), fungsi harus memanggil nilai FAKT (N-2) dan seterusnya. Notasi FAKT (N-1), yang digunakan untuk memanggil nilai fungsi sebelumnya, sering disebut dengan pemanggil rekursi atau recursion call.

Berikut ini adalah illustrasi menghitung nilai faktorial secara rekursi jika nilai N diisi 4.

Dalam illustrasi di atas jika kita isikan FAKT (4) maka 4 tidak sama dengan 0 (Karena FAKT (0) ditetapkan sebagai nilai awal, lihat kembali source code transaksi menghitung faktorial). Dengan ddemikian, ia perlu menghitung FAKT (N-1) yang sama dengan FAKT (3) terlebih dahulu. Sehinggga program akan mengerjakan FAKT (3). Dalam hal ini pun program menjumpai bahwa 3 tidak sama dengan 0. Proses diteruskan sampai program mengeksekusi FAKT (0).

REKURSI dan ITERASI

Dalam beberapa hal, rekursi kurang efisien dibanding proses iterasi. Bandingkan fungsi faktorial yang juga digunakan untuk menghitung bilangan faktorial, tetapi dilaksanakan dengan cara iterasi.
Dalam beberapa situasi, pemecah secara rekursif dan secara iteratif mempunyai keuntungan dan kekurangan yang bisa lain dibandingkan. Dalah cukup sulit untuk menentukan mana yang paling sederhana, paling jelas, paling efisien dan paling mudah dibanding yang lain.

Menghitung Faktorial Iterasi
Berikut ini adalah program untuk menghitung bilangan faktorial secara iterasi menggunakan Integrated Development Envirom=nment Lazarus :

Listing Program :
Layar Keluaran

Menghitung Faktorial Rekursif
Berikut ini adalah program untuk menghitung bilangan faktorial secara rekursif menggunakan Integrated Development Environment Lazarus :
Layar Keluaran

Share on Google Plus

About Dadan Pauzan

Kami merupakan salah satu komunitas yang hobi menulis artikel di blog, main game, ngoding, edit musik dan membuat video.
    Blogger Comment
    Facebook Comment

0 comments:

Post a Comment

Silahkan Berikan Komentarnya di Bawah ini....!!!!!