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

Slides:



Advertisements
Presentasi serupa
Algoritma dan Struktur Data
Advertisements

1 Ruli Manurung & Ade AzuratFasilkom UI - IKI /2008 – Ganjil – Minggu 4 Dasar-dasar Rekursif.
Desain dan Analisis Algoritma
Pertemuan 2 INDUKSI MATEMATIKA & FUNGSI REKURSIF
Modul 1- Review Java.
Pemrograman Terstruktur
Fungsi Rekursif.
sebuah fungsi yang memanggil dirinya sendiri
Sumber Kepustakaan : indryz.lecture.ub.ac.id/.../analisa-efisiensi- algoritm... 1  Fungsi yang memanggil dirinya sendiri  Sebuah fungsi f juga merupakan.
LOGIKA DAN ALGORITMA - PERTEMUAN 8 - REKURSI.
STRUKTUR DATA recursive function.
PELATIHAN JAVA FUNDAMENTAL
Algoritma dan Struktur Data
Design and Analysis Algorithm
Algoritma dan Struktur Data
Structure Data - Array Pertemuan 7 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
ALGORITMA Matakuliah : T0974 / Algoritma dan Metode Object Oriented Programming I Tahun : 2008 Versi : 1/0.
STREAM INPUT/OUPUT Pertemuan 4 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
1 Pertemuan 5 STREAM INPUT/OUPUT Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
FUNCTIONS Pertemuan 9 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
TIPE DATA DAN INPUT/OUTPUT Matakuliah: T0974 / Algoritma dan Metode Object Oriented Programming I Tahun: 2008 Versi: 1/0.
Inheritance Matakuliah : T0984 / Algoritma dan Metode Object Oriented Programming II Pertemuan : 4 Tahun : 2008 Versi : 1/0.
1 Pertemuan 1 Algoritma Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
1 Pertemuan 17 Polymorphism Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
Class and Object Matakuliah : XXXX / Algoritma dan Metode Object Oriented Programming II Pertemuan : 2 Tahun : 2008 Versi : 1/0.
SORTING Matakuliah : T0974 / Algoritma dan Metode Object Oriented Programming I Tahun : 2008 Versi : 1/0.
OPERASI ARITMETIKA.
OPERASI JUMP DAN EXCEPTION HANDLING
PERNYATAAN PERULANGAN
File Matakuliah: XXXX / Algoritma dan Metode Object Oriented Programming II Pertemuan: 9 Tahun: 2008 Versi: 1/0.
Polymorphism Matakuliah : T0984 / Algoritma dan Metode Object Oriented Programming II Pertemuan : 5 Tahun : 2008 Versi : 1/0.
Perulangan (Iteration)
Basic Class Matakuliah : T0984 / Algoritma dan Metode Object Oriented Programming II Pertemuan : 3 Tahun : 2008 Versi : 1/0.
Multimedia Pertemuan 13 Matakuliah: M0864/Programming I Tahun: 2009.
Pertemuan 6 PEWARISAN AND POLYMORPHISM
UTILITAS JAVA Matakuliah: T0974 / Algoritma dan Metode Object Oriented Programming I Tahun: 2008 Versi: 1/0.
ArrayList and Vector Matakuliah: T0984 / Algoritma dan Metode Object Oriented Programming II Pertemuan: 7 Tahun: 2008 Versi: 1/0.
METHODS Matakuliah: T0974 / Algoritma dan Metode Object Oriented Programming I Tahun: 2008 Versi: 1/0.
Polymorphism Pertemuan 9 Matakuliah: M0864/Programming I Tahun: 2009.
Rekursi (Recursion) Fungsi rekursi adalah fungsi yang didalam function body- nya ada statement yang memanggil dirinya sendiri. Fungsi rekursif, sangat.
PERNYATAAN SELEKSI Matakuliah : Algoritma dan Metode Object Oriented Programming I Tahun : 2009 Versi : 1/0.
Algoritma sorting dasar (lanjutan) Pertemuan 11
OPERASI RELASIONAL DAN LOGIKA Matakuliah: T0974 / Algoritma dan Metode Object Oriented Programming I Tahun: 2008 Versi: 1/0.
STRUKTUR DATA (10) recursive function
Algoritma dan Struktur Data
Bina Nusantara Mata kuliah:K0144/ Matematika Diskrit Tahun:2008 FUNGSI REKURSIF Pertemuan 10:
1 Pertemuan Fungsi Matakuliah: T0616 / Algoritma dan Pemrograman Tahun: 2007 Versi: 1/0.
Rekursif Rizki Muliono,M.Kom.
Pertemuan 1 Rekursi jual [Valdo] Lunatik Chubby Stylus.
DIG1G3 Implementasi Struktur Data
PERNYATAAN PERULANGAN
METHODS Mr. Yasri Object Oriented Program.
PERNYATAAN SELEKSI Matakuliah : T0974 / Algoritma dan Metode Object Oriented Programming I Tahun : 2008 Versi : 1/0.
Inheritance Pertemuan 8
REKURSIF Learning Outcomes Pada akhir pertemuan ini, mahasiswa mampu:
Mata kuliah :K0362/ Matematika Diskrit Tahun :2008
Pemrograman berorientasi Objek
Constructor dan Destructor Pertemuan 17
Matakuliah : M0864/Programming I
~ PERTEMUAN 8 STRUKTUR REKURSIF ~
Recursive function.
STRUKTUR DATA (10) recursive function
Array / Larik.
ARRAY UNRIYO.
Algoritma Rekursif Alpro-2.
Rekursif By Serdiwansyah N. A..
Analisa algoritma rekursif
Konsep Bahasa Pemrograman I Operator
Mengulang Kembali Type Data Input Output Struktur Kontrol
Multithreading Matakuliah : T0984 / Algoritma dan Metode Object Oriented Programming II Pertemuan : 12 Tahun : 2008 Versi : 1/0.
Transcript presentasi:

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

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

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

Method yang memanggil dirinya sendiri Berguna untuk teknik pemrograman 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) Bina Nusantara

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) Bina Nusantara

Penggunaan Rekursif Bina Nusantara

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 Bina Nusantara

Faktorial lebih baik menggunakan loop 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 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 1 2 3 4 5 6 7 8 9 10 11 Seri 13 21 34 55 89 Bina Nusantara

Penggunaan Rekursif Bina Nusantara

Penggunaan Rekursif 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 20-02-2002 Bina Nusantara

Penggunaan Rekursif Bina Nusantara

Penggunaan Rekursif Bina Nusantara

Method isPalindrome pertama mengecek apakah string tersebut palindrom 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 Bina Nusantara

Rekursif vs Iteratif Rekursif: Iteratif: 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 Bina Nusantara

Menyebabkan StackOverflowError Solusi 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; 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 Bina Nusantara

Advanced Learning Bina Nusantara

Advanced Learning Bina Nusantara

Advanced Learning Bina Nusantara

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 Bina Nusantara