Pertemuan 1 Rekursi jual [Valdo] Lunatik Chubby Stylus
Fungsi Rekursif Definisi fungsi rekursif. Contoh 1 : Triangle Contoh 2 : Faktorial Contoh 3 : Perkalian Contoh 4 : Fibonacci Contoh 5 : Tower of Hanoi
Fibonacci 0,1,1,2,3,5,8,13,21,34,55,89,144,.. The Fibonacci series fn≥0 is a famous series defined by: f0 :≡ 0, f1 :≡ 1, fn≥2 :≡ fn−1 + fn−2 f2 = f0 + f1 = 0 + 1 = 1 f3 = f1 + f2 = 1 + 1 = 2 f4 = f2 + f3 = 1 + 2 = 3 f5 = f3 + f4 = 2 + 3 = 5 …. Leonardo Fibonacci 1170-1250
Fibonacci ALGORITMA fibo( n ) = n if n == 0 or n == 1 fibo( n ) = fibo( n – 2 ) + fibo( n – 1 ) if n >= 2 fibo( 4 ) = fibo( 2 ) + fibo( 3 ) = fibo( 0 ) + fibo ( 1 ) + fibo( 3 ) = 0 + 1 + fibo( 1 ) + fibo( 2 ) = 0 + 1 + 1 + fibo( 0 ) + fibo( 1 ) = 0 + 1 + 1 + 0 + 1 = 3 SOURCE CODE int fibo ( int n ) { int x, y; if ( n <= 1 ) return ( n ); }else{ x = fibo( n - 1 ); y = fibo( n - 2 ); return ( x + y ); }
Tracing Fibonacci fibo (4) = ? F(4) F(2) F(3) F(2) F(0) F(1) F(1) F(0)
Towers of Hanoi Sebuah game /puzzle matematika kuno dimana ada ada tiga buah tiang, dimana salah satu tiang terdapat beberapa piringan Piringan akan dipindahkan ke tiang yang lain dengan salah satu tiang menjadi tiang bantu Untuk memindahkan ada beberap syarat Hanya ada satu piringan yang berpindah dalam satu langkah Tidak boleh ada piringan yang berada di atas piringan yang lebih kecil Total langkah yang dibutuhkan untuk menyelesaikan puzzle secara matematika adalah 2n -1 dengan n adalah banyaknya piringan
ALGORITMA If n == 1, move the single disk from A to C and stop. Move the top n – 1 disks from A to B, using C as auxiliary. Move the remaining disk from A to C. Move the n – 1 disks from B to C, using A as auxiliary. SOURCE CODE void towers( int n, char from, char to, char aux) { if ( n == 1 ) { printf(“\nmove disk 1 from %c to %c”, from, to); return; }else{ towers( n – 1, from, aux, to ); printf(“\nmove disk %d from %c to %c”, n, from, to); towers( n – 1, aux, to, from ); }
Tracing Towers of Hanoi towers(3, A, C, B) = ?
resume Kelebihan : Kekurangan : Program menjadi lebih singkat/sederhana Dalam beberapa kasus kasus memang dibutuhkan penggunaan rekursi Kekurangan : Kurang efektif dalam hal kecepatan Membutuhkah memori lebih, karena ketika satu fungsi / method memanggil dirinya , dibutuhkan tambahan alokasi memori. Sehingga alokasi memori total menjadi lebih besar
Tugas Rumah : TRACING 1. NPM genap : towers (4, A, C, B) = ? NPM ganjil : towers (4, C, A, B ) = ? 2. fibo(6) = ?
http://coding-n-inspiring.blogspot.com wikipedia