Thursday, November 10

Rekursif dan Iteratif Dalam Algoritma Pemrograman


Dalam jurusan yang berkaitan dengan teknologi mungkin sudah tak asing lagi mendengar kata algoritma pemrograman. Algoritma pemrograman merupakan suatu hal yang wajib diketahui,
karena seseorang yang akan menjadi seorang programmer, designer, project manager, dsb. Perlu memiliki skill dasar tentang Algoritma pemrograman.

Dalam pembelajaran Algoritma Pemrograman pada matakuliah Desain Analisis Algoritma, terdapat materi yang membahas Rekursif dan Iteratif. Apasih perbedaan kedua istilah tersebut?


Iteratif

Sebuah proses iteratif merupakan suatu proses dalam algoritma yang melakukan perhitungan dengan hasil yang diingin menggunakan cara siklus berulang melalui sebuah operasi perulangan.

Berdasarkan pandangan ilmu pemrograman komputer, iteratif menggambarkan situasi dimana urutan instruksi dapat dieksekusi berulang kali. Dalam sekali eksekusi biasa disebut juga 1 iterasi. Dan jika iterasi dilakukan berulang kali, proses tersebut biasa dikenal sebagai loop. Sehinga proses iterasi terjadi karena adanya loop.

Dalam software development proses iteratif menggambarkan proses pengembangan dan perencanaan heuristik dalam pengembangan sebuah aplikasi. Dalam setiap iterasi akan ditinjau oleh tim software development untuk validasi sebelum digunakan oleh end-user.

Berikut contoh pseudocode algoritma iteratif:


/*Fungsi pencarian nilai maximum*/
Function maximum(A,n){
 m <- A[1]
 i <- 2
 While (i <= n) do
  if (A[i] > m) then
    m <- A[i]
  i <- i+1
 endwhile
 return m
}


Rekursif

Suatu entitas yang disebut rekursif jika dalam pendefenisian entitas tersebut terkandung entitas tersebut. Dalam artian sebuah rekursif merupakan suatu perulangan yang menggunakan metode memanggil dirinya sendiri dalam sebuah algoritma pemrograman. Jadi metode rekursif, melakukan siklus tanpa menggunakan sintax perulangan seperti, (for, while do, repeat untill, dan sejenisnya).

Untuk mengenal suatu program yang mengandung nilai rekursf atau tidak, hanya melihat dari kondisi paramater. Jika program utama tidak memiliki parameter, tidak mungkin bersifat rekursif. Selain itu prosedur dan fungsi juga bisa bersifat rekursif. Contoh kasus yang biasa menggunakan rekursif adalah faktorial.

Prosedur rekursif memerlukan cara pendefenisian yang disebut Initial State dan Final State. Initial state merupakan suatu kondisi awal dari suatu masalah yang akan dipecahkan. Sedangkan Final state merupakan  kondisi akhir dari suatu permasalahan yang telah terpecahkan.

Berikut contoh pseudocode algoritma rekursif:


/*Fungsi Rekursif*/
function Power(int x, int n): integer
  if(n == 0) then
   -> 1
  else
   x*Power(x,n-1)


Rekursif dan iteratif memiliki kekurangan dan kelebihan masing-masing. Dalam proses loop, rekursif bisa terbilang lebih muda, dibanding iteratif karena rekursif menggunakan metode pemanggilan diri sendiri. Dalam segi penggunaan memory, iteratif lebih unggul dibanding dengan rekursif. Selain itu dalam kelebihan rekursif juga terlihat dari penggunaan algoritma, dimana pseudocode rekursif lebih singkat dibanding dengan iteratif, seperti kasus pseudocode di atas. Meskipun demikian terdapat kekurangan masing-masing dari kedua metode tersebut. Dimana rekursif perlu banyak pertimbangan dalam penggunaannya sebab, metode tersebut dapat mengakibatkan stack overflow atau ketidak cukupan memori. Sedangkan Iteratif memiliki kekurangan, yaitu tidak dapat memanggil dirinya sendiri dan lebih menggunakan banyak kosa-kata algoritma dibanding rekursif.


EmoticonEmoticon