Posted in Programming

Iterasi vs Rekursi

00

Sering sekali kita dihadapkan dengan persoalan perulangan. Solusi yang dapat kita lakukan adalah rekursi atau iterasi. Secara kasat mata, perbedaannya mungkin tidak terlihat karena memunculkan hasil yang sama, yaitu perulangan. Namun, ada hal- hal yang membedakan keduanya.

Perbedaan umum dari rekursi dan iterasi dapat kita lihat di tabel ini :

Iterasi Rekursi
Perintah iterasi, merupakan proses perulangan yang loop based Menggunakan fungsi rekursi, fungsi tersebut akan memanggil dirinya sendiri
Menggunakan struktur perualangan (repetition structure) Menggunakan struktur seleksi (selection structure)
Pengalokasian memori relatif kecil Pengalokasian memori relatif besar
Nilai tak hingga akan membuat CPU cycle digunakan terus-menerus
Nilai tak hingga akan membuat sistem crash
Kode umumnya lebih panjang daripada rekursi Kode umumnya lebih pendek dari iterasi
Rekursi akan terhenti apa bila sudah mencapai indeks dasar Iterasi akan terhenti apa bila kondisi loop tidak terpenuhi

Itulah beberapa perbedaan antara rekursi dan iterasi. Kemudian bagaimana dengan teknis penggunaannya? Mari kita bahas. Program yang sering dijadikan contoh adalah program pencari hasil faktorial.

Iterasi

Contoh program iterasi :

01
Contoh Iterasi 1

Atau

03
Contoh Iterasi 2

Misalkan kita akan menghitung hasil dari faktorial(5) yang memiliki hasil 120, proses yang harus ditempuh dalam iterasi :

Proses pada contoh program 1 :

i hasil * (i + 1) hasil
0 1 * (1 + 0) 1
1 1 * (1 + 1) 2
2 2 * (1 + 2) 6
3 6 * (1 + 3) 24
4 24 * (1 + 4) 120

Proses pada contoh program 2 :

i hasil * (i) hasil
5 1 * (5) 5
4 5 * (4) 20
3 20* (3) 60
2 60 * (2) 120
1 120 * (1) 120

Perlu diingat, indeks perulangan dimulai dari “nol”. Perbedaan mencolok dari Contoh 1 dan Contoh 2 adalah pada variabel indeks perulangan. Contoh 1 menggunakan increment, perulangan dilakukan dari indeks terkecil ke indeks terbesar. Sedangkan pada Contoh 2 menggunakan decrement, perulangan dilakukan dari indeks terbesar ke indeks terkecil.

Rekursi

Contoh program rekursi :

02

Sama seperti contoh iterasi, kita akan menghitung hasil dari faktorial(5) secara rekursif.

faktorial(5)
    5 * faktorial(4) --> 5 * 4 = 20
           4 * faktorial(3) --> 20 * 3 = 60
                 3 * faktorial(2) --> 60 * 2 = 120
                       2 * faktorial(1) --> 120 * 1 = 120

Pada rekursif terjadi pemanggilan ulang dari fungsi beberapa kali sebanyak indeks. Indeks yang dimaksud di sini adalah parameter inputan fungsi. Algoritma dari rekursi mirip dengan algoritma pada contoh program iterasi kedua.

Iterasi dan Rekursi memiliki kekurangan dan kelemahannya masing-masing. Fungsi optimum dari keduanya akan didapat apabila kita menggunakannya sesuai dengan kebutuhan.

Contoh program dapat dilihat di sini :

Semoga bermanfaat 🙂

Advertisements

Author:

I'm just a simple guy..

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s