Tugas Ke-2 Algoritma dan Pemprograman
Description
Penjelasan rekursi dalam notasi algoritmik, dan realisasi dalam bahasa pemprograman fungsional LISP. Rekursi dijelaskan lebih lengkap menggunakan ilustrasi gambar, sehingga lebih mudah dipahami.
Shared by: AskarSyah
-
Stats
- views:
- 63
- posted:
- 1/7/2012
- language:
- Malay
- pages:
- 5
Document Sample


Algoritma & Pemprograman halaman 1 dari 5
Tugas Individual
Mata Kuliah Algoritma dan
Pemprograman
(Hari dan Tanggal Penugasan:
Rabu, 17 Februari 2010) Fakultas Ilmu Komputer
Program Studi Teknik Informatika
“Membuat Sebuah Dokumen yang Universitas Dian Nuswantoro
Menjelaskan Tentang Rekursi” Semarang
Semester II
Tahun Ajaran 2009-2010 Nama Mahasiswa : Syah Askar Akbar
NIM : A11.2009.05163
Kelompok : A11.4213
Dosen Pengampu : Ifan Rizqa, M. Kom.
REKURSI
Rekursi : Suatu proses yang dapat memanggil proses itu sendiri.
Proses tersebut biasanya berupa prosedur ataupun fungsi. Jadi, apabila
proses itu berupa prosedur, maka disebut dengan prosedur rekursif
(prosedur yang dapat memanggil prosedur itu sendiri), begitu pula dengan
fungsi, yang disebut dengan fungsi rekursif (fungsi yang dapat memanggil
fungsi itu sendiri).
Iterasi : Sesuatu yang dilakukan berulang-ulang.
Dalam pemrograman, iterasi lebih dikenal dengan sebutan ‘perulangan’,
‘repetisi’ atau ‘looping’.
Biasanya rekursi bersifat iteratif karena pemanggilan oleh suatu proses
terhadap proses itu sendiri dilakukan berulang-ulang. Sehingga, dapat
dikatakan bahwa rekursi adalah iterasi, tetapi iterasi bukanlah rekursi.
Oleh karena itu, ada yang berpendapat bahwa:
Rekursi adalah pemanggilan yang dilakukan berulang-ulang oleh suatu
proses terhadap proses itu sendiri, hingga diperoleh sebuah nilai konstan
pada saat pemanggilan terakhir, dan kemudian melewatkan nilai konstan
yang telah diperoleh tersebut ke dalam proses-proses yang telah terpanggil
sebelumnya, dengan berurutan hingga kembali lagi pada proses yang
berada di awal antrian (pemanggilan pertama). ada beberapa kasus
tertentu yang tidak memiliki fase balik!
Dari pengertian ini dapat ditarik kesimpulan bahwa, ada dua bagian
penting dalam rekursi, yakni: bagian terminasi (titik henti) dan bagian
yang memanggil dirinya sendiri.
Syah Askar Akbar (A11.2009.05163) Tugas Ke-2
Algoritma & Pemprograman halaman 2 dari 5
Yang menjadi pertanyaan sekarang adalah: Adakah rekursi tanpa henti?
Untuk menjawab pertanyaan tersebut, kita lihat kembali pengertian dari
rekursi, yakni “suatu proses yang dapat memanggil proses itu sendiri”.
Dari pengertian tersebut tidak digambarkan seberapa banyak pemanggilan
yang dilakukan, sehingga dapat disimpulkan bahwa, ada dua jenis rekursi,
yaitu:
1. Rekursi dengan terminasi : memiliki dua blok penting , yakni blok
terminasi dan blok pemanggilan terhadap
dirinya sendiri.
2. Rekursi tanpa terminasi : hanya memiliki satu blok penting saja, yakni
blok pemanggilan terhadap dirinya sendiri.
Poin nomor 2 disebut juga dengan rekursi tanpa henti, karena perulangan
akan terus terjadi hingga space memory tidak dapat menampungnya, yang
akibatnya berlanjut pada hang-nya komputer jika perulangan tersebut tidak
diinterupsi atau dihentikan.
poin nomor 2 bisa saja termasuk ke dalam jenis rekursi dengan
terminasi, jika kita mengambil blok terminasinya berupa sebuah kondisi
dimana space memory komputer habis terpakai.
Contoh-contoh penggunaan rekursi:
1. Perkalian antara dua buah bilangan bulat:
1, 0
, 0 0
1, 0
JUDUL
PERKALIAN_2_INTEGER kali (a, b)
DEFINISI DAN SPESIFIKASI
kali : 2 integer integer
{kali (a, b) merupakan penjumlahan b sebanyak a}
REALISASI FUNGSIONAL
kali (a, b) :
depend on a, b
a = 0 : 0
a < 0 : -b + kali (a + 1, b)
a > 0 : b + kali (a – 1, b)
REALISASI LISP
(defun kali (a b)
(cond ((= a 0) 0)
((< a 0) (+ (* b -1) (kali (+ a 1) b)))
((> a 0) (+ b (kali (- a 1) b)))
)
)
kali
Syah Askar Akbar (A11.2009.05163) Tugas Ke-2
Algoritma & Pemprograman halaman 3 dari 5
APLIKASI
(kali 0 0)
0
(kali 0 5)
0
(kali 3 0)
0
(kali 3 5)
15
(kali 3 -5)
-15
(kali -3 5)
-15
(kali -3 -5)
15
Ilustrasi:
Syah Askar Akbar (A11.2009.05163) Tugas Ke-2
Algoritma & Pemprograman halaman 4 dari 5
2. Faktorial dari sebuah bilangan bulat:
. 1 0
1 0 1
. 1 1
JUDUL
FAKTORIAL_INTEGER faktorial (askar)
DEFINISI DAN SPESIFIKASI
faktorial : integer integer
{faktorial (askar) menghasilkan 1 jika askar bernilai 0 atau 1,
menghasilkan askar kali faktorial (askar – 1) jika askar berharga
positif dan menghasilkan askar kali faktorial (-askar -1) jika
askar berharga negatif}
REALISASI FUNGSIONAL
faktorial (askar) :
depend on askar
askar = 0 or askar = 1 : 1
askar < 0 : askar * faktorial (-askar - 1)
askar > 0 : askar * faktorial (askar - 1)
REALISASI LISP
(defun faktorial (askar)
(cond ((= askar 0) 1)
((= askar 1) 1)
((> askar 1) (* askar (faktorial (- askar 1))))
((< askar 1) (* askar (faktorial (- (* askar -1) 1))))
)
)
faktorial
APLIKASI
(faktorial -5)
-120
(faktorial -4)
-24
(faktorial -1)
-1
(faktorial 0)
1
(faktorial 1)
1
(faktorial 4)
24
(faktorial 5)
120
Syah Askar Akbar (A11.2009.05163) Tugas Ke-2
Algoritma & Pemprograman halaman 5 dari 5
Ilustrasi:
3. Dan lain-lain…
Referensi:
1. http://kur2003.if.itb.ac.id/file/DiktatLISP%20Feb07.pdf
2. http://bayoe.staff.uns.ac.id/files/2009/04/5rekursi-dan-iteratif.pdf
3. http://noorifada.files.wordpress.com/2009/08/alpro_14-rekursi.pdf
4. http://lecturer.ukdw.ac.id/anton/download/prak-strukdat/modul%209%20-
%20fungsi%20rekursi%20dan%20tree.doc
5. http://www.eepis-
its.edu/~entin/Struktur%20Data%20&%20Algoritma/buku/Data%20Structure%20-
%20Bab%205.pdf
6. http://dhamidin.files.wordpress.com/2008/01/modul-ii.pdf
7. http://lecturer.eepis-its.edu/~arna/Praktikum_ASD/Prak%209.%20Rekursi.pdf
8. http://elista.akprind.ac.id/upload/files/6257_BAB_02_PROSES_REKURSI_DAN_ITE
RASI.pdf
9. http://lecturer.eepis-its.edu/~arna/Modul_ASD/7.%20Rekursi.pdf
Syah Askar Akbar (A11.2009.05163) Tugas Ke-2
Get documents about "