Pertemuan 1 Rekursi Fungsi Rekursif Definisi fungsi rekursif

  • Slides: 15
Download presentation
Pertemuan 1 Rekursi

Pertemuan 1 Rekursi

Fungsi Rekursif �Definisi fungsi rekursif. �Contoh 1 : Triangle �Contoh 2 : Faktorial �Contoh

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,

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: f 0 : ≡ 0, f 1 : ≡ 1, fn≥ 2 : ≡ fn− 1 + fn− 2 �f 2 = f 0 + f 1 = 0 + 1 = 1 �f 3 = f 1 + f 2 = 1 + 1 = 2 �f 4 = f 2 + f 3 = 1 + 2 = 3 �f 5 = f 3 + f 4 = 2 + 3 = 5 � …. Leonardo Fibonacci 1170 -1250

Fibonacci ALGORITMA SOURCE CODE fibo( n ) = n if n == 0 or

Fibonacci ALGORITMA SOURCE CODE fibo( n ) = n if n == 0 or n == 1 fibo( n ) = fibo( n – 2 ) + fibo( n – 1 ) if n >= 2 int fibo ( int n ) { int x, y; if ( n <= 1 ) { return ( n ); }else{ x = fibo( n - 1 ); y = fibo( n - 2 ); return ( x + y ); } } fibo( 4 ) = fibo( 2 ) + fibo( 3 ) = fibo( 0 ) + fibo ( 1 ) + fibo( 3 ) = 0 + 1 + fibo( 1 ) + fibo( 2 ) = 0 + 1 + fibo( 0 ) + fibo( 1 ) =0+1+1+0+1=3

Tracing Fibonacci �fibo (4) = ? F(4) F(2) F(0) F(3) F(1) F(2) F(1) F(0)

Tracing Fibonacci �fibo (4) = ? F(4) F(2) F(0) F(3) F(1) F(2) F(1) F(0) F(1)

Towers of Hanoi � Sebuah game /puzzle matematika kuno dimana ada tiga buah tiang,

Towers of Hanoi � Sebuah game /puzzle matematika kuno dimana 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 2 n -1 dengan n adalah banyaknya piringan

ALGORITMA 1. If n == 1, move the single disk from A to C

ALGORITMA 1. If n == 1, move the single disk from A to C and stop. 2. Move the top n – 1 disks from A to B, using C as auxiliary. 3. Move the remaining disk from A to C. 4. 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) = ?

Tracing Towers of Hanoi �towers(3, A, C, B) = ?

resume �Kelebihan : � Program menjadi lebih singkat/sederhana � Dalam beberapa kasus memang dibutuhkan

resume �Kelebihan : � Program menjadi lebih singkat/sederhana � Dalam beberapa 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) =

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

�http: //coding-n-inspiring. blogspot. com �wikipedia