1 / 21

REKURSIF

REKURSIF. Learning Outcomes Pada akhir pertemuan ini , mahasiswa mampu : Menjelaskan definisi rekursif Menerapkan rekursif dalam pembuatan program Membedakan rekursif dan iteratif. Outline Materi. Definisi rekursif Deklarasi rekursif Penggunaan rekursif Analisa rekursif dan iterasi.

binh
Download Presentation

REKURSIF

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. REKURSIF Learning Outcomes Padaakhirpertemuanini, mahasiswamampu: • Menjelaskandefinisirekursif • Menerapkanrekursifdalampembuatan program • Membedakanrekursifdaniteratif

  2. Outline Materi • Definisi rekursif • Deklarasi rekursif • Penggunaan rekursif • Analisa rekursif dan iterasi

  3. Definisi Rekursif • Method yang memanggildirinyasendiri • Bergunauntukteknikpemrograman • Lebihmemudahkanpemecahanmasalahtertentu • Contoh: Faktorial 0! = 1; n! = n x (n – 1)!; n > 0 • Memerlukankondisipenghentian (stopping condition atau base case)

  4. DeklarasiRekursif • Contohdeklarasirekursif: publicstatic long factorial(int n) { if(n==0)// stopping condition / base case return 1; else return n * factorial(n-1); // recursive call } • Pemanggilan factorial (dirisendiri)  rekursif • Dipanggilsampaimencapaikondisi n == 0 (stopping conditionataubase case)

  5. Penggunaan Rekursif

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

  7. PenggunaanRekursif ? • Faktoriallebihbaikmenggunakan loop inthasil = 1; if(bil>1) { for(inti=2; i<=bil; i++) hasil *= i; } • Faktorialbaikdalammerepresentasikanrekursif

  8. 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

  9. Penggunaan Rekursif

  10. Penggunaan Rekursif

  11. Penggunaan Rekursif • Palindrom: kata, frasa, bilangan, ataukalimat yang dibacasamadari 2 arahpembacaan • Contoh: • C I V I C • L E V E L • R O T A T O R • Was it a rat I saW • 58285 • 20-02-2002

  12. Penggunaan Rekursif

  13. Penggunaan Rekursif

  14. 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

  15. 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

  16. Did You Know? • Infinite recursion (rekursiftakterhingga) terjadijikatidakadastopping conditionataubase case • ContohpadaFaktorial publicstatic long factorial(int n) { return n * factorial(n-1); // recursive call } • MenyebabkanStackOverflowError • Solusi if(n==0) // stopping condition / base case return 1;

  17. 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

  18. Advanced Learning

  19. Advanced Learning

  20. Advanced Learning

  21. Referensi • Introduction to Java Programming. 7ed. Liang. 2009. ch 20 • Java Software Solutions. 5ed. Lewis & Loftus. 2007. ch 11 • Fibonacci. http://en.literateprograms.org/Fibonacci_numbers_(Java) • Palindrome. http://en.wikipedia.org/wiki/Palindrome • Towers of Hanoi. • http://www.codeproject.com/KB/graphics/Towers_of_Hanoi/Towers_of_Hanoi.jpg • http://www.codeproject.com/KB/graphics/Towers_of_Hanoi.aspx • http://www.java2s.com/Tutorial/Java/0100__Class-Definition/TheTowersofHanoi.htm • http://pirate.shu.edu/~wachsmut/Java/Hanoi/index.html

More Related