Data Structure + Algorithm = Program 3. Rekursif Data Structure + Algorithm = Program UNIV. INDONUSA Esa Unggul UNIV. INDONUSA Esa Unggul
Apakah Fungsi Rekursif? Fungsi yang memanggil dirinya sendiri disebut fungsi rekursif. Sebagai contoh di bawah ini diberikan fungsi untuk menghitung nilai faktorial: 0! = 1 1! = 1 = 1 x 0! 2! = 2 x 1 = 2 x 1! 3! = 3 x 2 x 1 = 3 x 2! n! = n x (n-1)! UNIV. INDONUSA Esa Unggul
Apakah Fungsi Rekursif? (lanjutan) , maka fungsi rekursifnya adalah sebagai berikut: int fact(int n){ if(0==n) return 1; return n*fact(n-1); } Setiap fungsi rekursif akan memiliki kondisi berhenti, yang dalam contoh di atas adalah: UNIV. INDONUSA Esa Unggul
Apakah Fungsi Rekursif? (lanjutan) Misal, kita akan menghitung 3! = 6, maka kita memanggil fungsi tersebut sbb: int hasil = fact(3); n=3 0==n? false return 3 * fact(2) fact(2) n = 2 return 2 * fact(1) UNIV. INDONUSA Esa Unggul
Apakah Fungsi Rekursif? (lanjutan) fact(1) n = 1 0==n? false return 1 * fact(0) fact(0) n = 0 0==n? true return 1 Sehingga int hasil = fact(3) = 3 * 2 * 1 * 1 = 6; UNIV. INDONUSA Esa Unggul
UNIV. INDONUSA Esa Unggul Hi Einstein! Setiap fungsi rekursif bisa dikembalikan ke bentuk non-rekursif / iterasi biasa (for/while/do-while). Cobalah untuk membuat fungsi faktorial non-rekursif! Kemudian bandingkan keuntungan dan kerugian fungsi rekursif dan non-rekursif. UNIV. INDONUSA Esa Unggul