Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehAde Johan Telah diubah "6 tahun yang lalu
1
REKURSIF Learning Outcomes Pada akhir pertemuan ini, mahasiswa mampu:
Menjelaskan definisi rekursif Menerapkan rekursif dalam pembuatan program Membedakan rekursif dan iteratif
2
Outline Materi Definisi rekursif Deklarasi rekursif
Penggunaan rekursif Analisa rekursif dan iterasi
3
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)
4
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)
5
Penggunaan Rekursif
6
Penggunaan Rekursif factorial(4) return 4 * factorial(3)
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
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
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 Index 1 2 3 4 5 6 7 8 9 10 11 Seri 13 21 34 55 89
9
Penggunaan Rekursif
10
Penggunaan Rekursif
11
Penggunaan Rekursif Palindrom: kata, frasa, bilangan, atau kalimat yang dibaca sama dari 2 arah pembacaan 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
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 (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;
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 ch 11 Fibonacci. Palindrome. Towers of Hanoi.
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.