3.1 Tujuan
Modul
ini mengenalkan suatu teknik pemrograman yang lebih tinggi. Dalam bagian ini
Anda akan mempelajari rekursif dan tipe data abstrak.
Setelah
menyelesaikan pelajaran ini, diharapkan Anda dapat:
1. Memahami dan menggunakan rekursif
2. Mengetahui perbedaan antara stacks dan
queues
2. Mengimplementasikan suatu implementasi
sequensial dari stacks dan queues
3. Mengimplementasikan suatu implementasi
linked dari stacks and queues
4. Menggunakan Collection classes yang ada
3.2 Rekursif
3.2.1 Apa yang dimaksud dengan Rekursif?
Rekursif
adalah teknik pemecahan masalah yang powerful dan dapat digunakan ketika inti
dari masalah terjadi berulang kali. Tentu saja, tipe dari masalah ini dapat
dipecahkan mengunakan perkataan berulang-ulang (i.e., menggunakan konstruksi
looping seperti for, while dan do-while).
Sesungguhnya,
iterasi atau perkataan berulang-ulang merupakan peralatan yang lebih efisien
jika dibandingkan dengan recursif tetapi recursion menyediakan solusi yang
lebih baik untuk suatu masalah. Pada rekursif, method dapat memanggil dirinya
sendiri. Data yang berada dalam method tersebut seperti argument disimpan
sementara kedalam stack sampai method pemanggilnya diselesaikan.
3.2.2 Rekursif Vs. Iterasi
Untuk
pengertian yang lebih baik dari rekursif, mari kita lihat pada bagaimana macam-
macam dari teknik iterasi. Dalam teknik-teknik tersebut dapat juga kita lihat
penyelesaian sebuah loop yang lebih baik menggunakan rekursif dari pada
iterasi.
Menyelesaikan
masalah dengan perulangan menggunakan iterasi secara tegas juga digunakan pada
struktur kontrol pengulangan. Sementara itu, untuk rekursif, task diulangi
dengan memanggil sebuah method pengulangan. Maksud dari hal tersebut adalah
untuk menggambarkan sebuah masalah kedalam lingkup yang lebih kecil dari
pengulangan itu sendiri. Pertimbangan suatu perhitungan yang faktorial dalam
penentuan bilangan bulat. Definisi rekursif dari hal tersebut dapat diuraikan
sebagai berikut: factorial(n) = factorial(n-1) * n; factorial(1) = 1. Sebagai
contohnya, nilai faktorial dari 2 sama dengan fatorial (1)*2, dimana hasilnya
adalah 2. Faktorial dari 3 adalah 6, dimana sama dengan faktorial dari (2)*3.
Dengan
iterasi, proses diakhiri ketika kondisi loop gagal atau salah. Dalam kasus dari
penggunaan rekursif, proses yang berakhir dengan kondisi tertentu disebut
permasalahan dasar yang telah tercukupi oleh suatu pembatasan kondisi.
Permasalahan yang mendasar merupakan kejadian yang paling kecil dari sebuah
masalah. Sebagai contohnya, dapat dilihat pada kondisi rekursif pada faktorial,
kasus yang mudah adalah ketika inputnya adalah 1. 1 dalam kasus ini merupakan
inti dari masalah.
Penggunaan
dari iterasi dan rekursif dapat bersama-sama memandu loops jika hal ini tidak
digunakan dengan benar.
Keuntungan
iterasi dibandingkan recursion adalah performance yang lebih baik. Hal tersebut
lebih cepat untuk recursion sejak terbentuknya sebuah parameter pada sebuah
method yang disebabkan oleh suatu CPU time. Bagaimanapun juga, rekursif
mendorong practice software engineering yang lebih baik, sebab teknik ini
biasanya dihasilkan pada kode yang singkat yang lebih mudah untuk dimengerti
dan juga mempromosikan reuseability pada suatu solusi yang telah diterapkan.
Memilih
antara iterasi dan rekursif merupakan masalah dari menjaga keseimbangan antara
baiknya sebuah performance dan baiknya software engineering.
3.2.3 Factorials: Contoh
Listing
program berikut ini menunjukkan bagaimana menghitung faktorial menggunakan
teknik iterasi.
class
Factoriallter {
static int factorial(int n) {
int result = 1; for (int i = n; i > 1; i--) {
result
*= i;
}
return
result;
}
public static void main(String args[]) { int n =
Integer.parseInt(args[0]); System.out.println(factorial(n));
}
}
0 Response to "program komputer - Teknik Pemrograman Lanjut"
Post a Comment