Rekursi
Pertemuan 1
Definisi fungsi rekursif.Contoh 1 : TriangleContoh 2 : FaktorialContoh 3 : PerkalianContoh 4 : FibonacciContoh 5 : Tower of Hanoi
Fungsi Rekursif
Fibonacci0,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
FibonacciALGORITMA
fibo( n ) = n if n == 0 or n == 1fibo( 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 Fibonaccifibo (4) = ?
F(4)
F(2) F(3)
F(0) F(1) F(1) F(2)
F(0) F(1)
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 syaratHanya ada satu piringan yang berpindah dalam satu
langkahTidak boleh ada piringan yang berada di atas piringan
yang lebih kecilTotal langkah yang dibutuhkan untuk menyelesaikan
puzzle secara matematika adalah 2n -1 dengan n adalah banyaknya piringan
Towers of Hanoi
ALGORITMA1. 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 CODEvoid 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 Hanoitowers(3, A, C, B) = ?
Kelebihan :Program menjadi lebih singkat/sederhanaDalam beberapa kasus kasus memang
dibutuhkan penggunaan rekursiKekurangan :
Kurang efektif dalam hal kecepatanMembutuhkah memori lebih, karena ketika
satu fungsi / method memanggil dirinya , dibutuhkan tambahan alokasi memori. Sehingga alokasi memori total menjadi lebih besar
resume
Tugas Rumah : TRACING1. NPM genap : towers (4, A, C, B) = ? NPM ganjil : towers (4, C, A, B ) = ?2. fibo(6) = ?
http://coding-n-inspiring.blogspot.comwikipedia