Pengertian Teknik Iteratif Perbandingan Teknik Rekursif dan Teknik Iteratif

362 Direktorat Pembinaan SMK | 2008 membutuhkan memori yang banyak terutama untuk bilangan yang besar. Yang kedua proses iterasi bisa membutuhkan waktu yang lama apabila bilangannya besar. Sedang Teknik Rekursif harus tahu formulanya dahulu, dalam hal ini mana base step-nya, dan mana rekursif step-nya. Biasa dipakai oleh pemrogram yang sudah agak lanjut dan operasi matematikanya merupakan operator biasa. Namun memori yang digunakan bukan memori langsung penampung variable namun merupakan stack. Jadi banyak sedikitnya penghitungan tergantung dari besarnya kapasitas stack yang dipunyai komputer. Secara rata-rata proses panghitungan dengan rekursif akan lebih cepat karena kompleksitasnya lebih kecil dibanding dengan iteratif. Kadang seseorang bertanya, loh saya kan juga bisa membuat fungsi pangkat di atas dengan menggunakan teknik iteratif. Misalnya menggunakan while loop. Kenapa harus repot‐repot menggunakan rekursif? Memang benar bahwa semua fungsi rekursif dapat dibuat versi iterasinya. Namun demikian, ada beberapa masalah yang jauh lebih mudah jika dipecahkan dengan rekursif. Kode program untuk beberapa masalah rekursif juga relatif lebih mudah dipahami dibandingkan versi iterasinya. Berikut adalah versi iteratif dari fungsi pangkat. Sekaranng perhatikan pada aplikasi permainan menara Hanoi di bawah ini Menara Hanoi ialah salah satu permainan yang dulunya dimainkan oleh seorang pendeta di Hanoi. Tujuan permainan ini ialah memindahkan n buah pringan dari tonggak asal A melalui tonggak bantu B menuju tonggak tujuan C. Dengan aturan–aturan bahwa piringan yang lebih kecil tidak boleh berada di bawah piringan yang lebih besar. Menara A B C : a b c Gambar 10.3. Menara dengan Tiga Piringan 2008 | Direktorat Pembinaan SMK 363 Seperti biasa untuk memecahkan masalah kita daftarkan dulu langkah- langkah yang diambil mulai n = 1. Dengan dfinisi piringan yang paling atas ialah piringan 1. Untuk n = 1 :  Pindahkan piringan 1 dari A ke C Untuk n = 2 :  Pindahkan piringan 1 dari A ke B  Pindahkan piringan 2 dari A ke C  Pindahkan piringan 3 dari B ke C Dari contoh diatas dapat diambil kesimpulan , untuk memindahkan N piringan dari tonggak asal A ke tonggak tujuan C maka piringan ke N harus berada di tonggak tujuan C, sedangkan piringan ke 1 sampai N - 1 harus berada di tonggak bantu B. Setelah piringan ke 1 sampai N-1 berada pada tonggak bantu B, kemudian pindahkan piringan ke 1 sampai n-1 tersebut dari tonggak bantu B ke tonggak tujuan C. Nah bagaimana caranya membawa piringan ke 1 sampai N-1 dari tonggak asal ke tonggak bantu B, caranya sama saja yaitu dengan memindahkan piringan ke n-1 dari tonggak asal A ke tonggak tujuan yang pada saat ini berada pada tonggak B sedangkan piringan dari 1 sampai ke N-2 dipindahkan ke tonggak bantu yang saat ini berada di tonggak C , Setelah piringan ke 1 sampai N-2 berada pada tonggak bantu C, kemudian pindahkan piringan ke 1 sampai N-2 ke tonggak tujuan B dan seterusnya. Metode penyelesaian permainan Hanoi di atas sering disebut sebagai metode back tracking, jadi solusi dicari dengan cara mundur ke belakang dahulu, baru kemudian solusi bisa ditemukan. Berikut Listing program Menara Hanoi dalam bahasa C Program 10.2 include stdio.h void Hanoiint n,char asal,char bantu, char tujuan pindahkan piringan ke n { dari asal menuju tujuan melalui bantu if n == return; Hanoin ‐ 1 ,asal,tujuan,bantu; pindahkan piringan ke n‐1 dari asal ke bantu melalui tonggak tujuan printf Pindah piring ke d ke dari c ke c\n ,n,asal,tujuan; Hanoin ‐ 1 ,bantu,asal,tujuan pindahkan piringan ke n ‐ 1 dari bantu menuju tujuan melalu asal } 364 Direktorat Pembinaan SMK | 2008 int mainvoid { int n; printf Jumlah piringan ? ; scanf d ,n; Hanoin,a,b,c; return ; }

10.4. Algoritma Teknik Rekursif

Telah disinggung di depan untuk Teknik Rekursif harus dicari mana base step-nya dan mana rekursif step-nya. Dari problem yang hendak dipecahkan dicari dahulu keduanya. Apabila sudah ketemu baru melangkah ke prose berikutnya yaitu menentukan pseudocode-nya, sekaligus menentukan apakah memakai procedure atau function. Untuk Teknik Rekursif ini lebih cocok memakai function, karena harus bisa dipanggil di dalam program tersebut. Sebagai contoh mencari faktorial seperti di atas. Algoritma rekursifnya sebagai berikut: 0 = 1; base step n = n x n – 1; n 0 recursive step Pseudocode-nya: Int Faktorialint n { If n==0 Return 1; Else Return n Faktorialn‐1 } Jika dijalankan gambaran prosesnya sebagai berikut: Misal untuk menghitung 4 2008 | Direktorat Pembinaan SMK 365 Gambar 10.4. Ilustrasi Rekursif Untuk Menghitung 4 faktorial 4 Dalam hal ini memang untuk rekursif harus memakai function karena procedure tidak dapat dipanggil di dalam procedure itu sendiri.

10.5. Algoritma Teknik Iteratif

Teknik Iteratif algoritmanya seperti apa adanya terlihat jadi tidak begitu rumit. Pada tulisan di atas telah dijelaskan beberapa contoh menghitung faktorial secara iteratif. Untuk lebih jelasnya lihat contoh berikut: 4 = 4 x 3 x 2 x 1 3 = 3 x 2 x 1 2 = 2 x 1 1 = 1 Algoritmanya disini sangat jelas untuk faktorial menggunakan Teknik Iteratif tinggal mengulang operasi perkalian dari 1 sampai dengan banyaknya n. Pseudocode Teknik Iteratif: int Faktorialint n { int x = 1; forint i = 1; i = n; i++ x = x i; return x; } Dapat dilihat di atas bahwa iterasinya adalah mengulang perkalian x = x i dari i = 1 sampai dengan I = n dengan penambahan 1 setiap perubahan i. Perlu diketahui juga untuk harga awal x harus sama dengan 1, jika tidak diberi harga awal maka hasilnya akan salah. Faktorial4 1 x Faktorial0 3 x Faktorial2 2 x Faktorial1 4 x Faktorial3 1