Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

REKURSIF Matakuliah: T0974 / Algoritma dan Metode Object Oriented Programming I Tahun: 2008 Versi: 1/0.

Presentasi serupa


Presentasi berjudul: "REKURSIF Matakuliah: T0974 / Algoritma dan Metode Object Oriented Programming I Tahun: 2008 Versi: 1/0."— Transcript presentasi:

1 REKURSIF Matakuliah: T0974 / Algoritma dan Metode Object Oriented Programming I Tahun: 2008 Versi: 1/0

2 Bina Nusantara Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu: Menjelaskan definisi rekursif Menerapkan rekursif dalam pembuatan program Membedakan rekursif dan iteratif

3 Bina Nusantara Outline Materi Definisi rekursif Deklarasi rekursif Penggunaan rekursif Analisa rekursif dan iterasi

4 Bina Nusantara Definisi Rekursif Method yang memanggil dirinya sendiri Berguna untuk teknik pemrograman Lebih memudahkan pemecahan masalah tertentu Contoh: Faktorial 0! = 1; n! = n x (n – 1)!; n > 0 Memerlukan kondisi penghentian (stopping condition atau base case)

5 Bina Nusantara Deklarasi Rekursif Contoh deklarasi rekursif: public static long factorial(int n) { if(n==0) // stopping condition / base case return 1; else return n * factorial(n-1); // recursive call } Pemanggilan factorial (diri sendiri)  rekursif Dipanggil sampai mencapai kondisi n == 0 (stopping condition atau base case)

6 Bina Nusantara Penggunaan Rekursif

7 Bina Nusantara return 1 return 1 * factorial(0) return 2 * factorial(1) return 3 * factorial(2) return 4 * factorial(3) Penggunaan Rekursif factorial(4) Step 0: executes factorial(4) Step 1: executes factorial(3) Step 2: executes factorial(2) Step 3: executes factorial(1) Step 4: executes factorial(0) Step 5: return 1 Step 6: return 1 Step 7: return 2 Step 8: return 6 Step 9: return 24

8 Bina Nusantara Penggunaan Rekursif Faktorial lebih baik menggunakan loop int hasil = 1; if(bil>1) { for(int i=2; i<=bil; i++) hasil *= i; } Faktorial baik dalam merepresentasikan rekursif

9 Bina Nusantara Penggunaan Rekursif Fibonacci: Dimulai dari 0 dan 1 Bilangan berikutnya penjumlahan dari 2 bilangan sebelumnya fib(0) = 0 fib(1) = 1 fib(index) = fib(index – 2) + fib(index – 1); index > =2 Index Seri

10 Bina Nusantara Penggunaan Rekursif

11 Bina Nusantara Penggunaan Rekursif

12 Bina Nusantara Penggunaan Rekursif Palindrom: kata, frasa, bilangan, atau kalimat yang dibaca sama dari 2 arah pembacaan Contoh: –Civic –Level –Rotator –Was it a rat I saw –58285 –

13 Bina Nusantara Penggunaan Rekursif

14 Bina Nusantara Penggunaan Rekursif

15 Bina Nusantara Penggunaan Rekursif Method isPalindrome pertama mengecek apakah string tersebut palindrom Method isPalindrome kedua mengecek apakah substring tersebut palindrom Teknik mendeklarasikan method bantuan untuk rekursif  recursive helper method Berguna untuk string dan array

16 Bina Nusantara Rekursif vs Iteratif Rekursif: –Bentuk alternatif kontrol program –Repetisi tanpa loop –Memanggil methodnya sendiri –Memerlukan pernyataan seleksi (if) untuk base case/stopping condition –Memerlukan memori lebih banyak –Waktu eksekusi lebih lambat –Terkadang lebih jelas, sederhana dibandingkan iteratif Iteratif: –Merupakan struktur kontrol (fundamental dari bahasa pemrograman) –Spesifikasi loop body –Dikontrol oleh loop-control-structure –Memori lebih sedikit dan waktu proses lebih cepat Permasalahan yang dapat diselesaikan oleh rekursif pasti bisa diselesaikan oleh iteratif

17 Bina Nusantara Did You Know? Infinite recursion (rekursif tak terhingga) terjadi jika tidak ada stopping condition atau base case Contoh pada Faktorial public static long factorial(int n) { return n * factorial(n-1); // recursive call } Menyebabkan StackOverflowError Solusi if(n==0) // stopping condition / base case return 1;

18 Bina Nusantara Advanced Learning Tower of Hanoi: contoh rekursif klasik Mudah diselesaikan dengan rekursif Terdapat 3 menara (tower) dan beberapa cakram (disk) dengan ukuran berbeda Disk atas harus lebih besar daripada disk bawah Semua disk berawal dari tower pertama Hanya 1 disk yang boleh dipindahkan dalam sekali waktu Semua disk harus dipindahkan ke tower akhir

19 Bina Nusantara Advanced Learning

20 Bina Nusantara Advanced Learning

21 Bina Nusantara Advanced Learning

22 Bina Nusantara Referensi Introduction to Java Programming. 7ed. Liang ch 20 Java Software Solutions. 5ed. Lewis & Loftus ch 11 Fibonacci. Palindrome. Towers of Hanoi. –http://www.codeproject.com/KB/graphics/Towers_of_Hanoi/Towers_of_Hanoi.jpghttp://www.codeproject.com/KB/graphics/Towers_of_Hanoi/Towers_of_Hanoi.jpg –http://www.codeproject.com/KB/graphics/Towers_of_Hanoi.aspxhttp://www.codeproject.com/KB/graphics/Towers_of_Hanoi.aspx –http://www.java2s.com/Tutorial/Java/0100__Class- Definition/TheTowersofHanoi.htmhttp://www.java2s.com/Tutorial/Java/0100__Class- Definition/TheTowersofHanoi.htm –http://pirate.shu.edu/~wachsmut/Java/Hanoi/index.htmlhttp://pirate.shu.edu/~wachsmut/Java/Hanoi/index.html


Download ppt "REKURSIF Matakuliah: T0974 / Algoritma dan Metode Object Oriented Programming I Tahun: 2008 Versi: 1/0."

Presentasi serupa


Iklan oleh Google