Pertemuan 1 Rekursi Fungsi Rekursif Definisi fungsi rekursif
- Slides: 23
Pertemuan 1 Rekursi
Fungsi Rekursif �Definisi fungsi rekursif. �Contoh 1 : Triangle �Contoh 2 : Faktorial �Contoh 3 : Perkalian �Contoh 4 : Fibonacci �Contoh 5 : Tower of Hanoi
Fungsi Rekursif �Fungsi biasa dipanggil oleh fungsi lain. Sedangkan fungsi rekursif dipanggil oleh dirinya sendiri. A B C D A A
�Triangel number : 1, 3, 6, 10, 15, 21, … �Ada yang tahu lanjutannya ?
Fungsi Rekursif �Setara dengan proses looping/ iterasi faktorial, perkalian �Kadang rekursif lebih baik dari iterasi tower of hanoi �Terkadang sebaliknya fibonacci �Komponen : � Way out if – else + return() � Recursive call dengan value baru
Ciri khas rekursif �Fungsi rekursif memanggil dirinya sendiri �Ketika memanggil dirinya sendiri, fungsi tersebut akan memecahkan masalah yang lebih kecil �Ada satu kondisi yang tidak membuat fungsi rekursif tidak memanggil dirinya sendiri
Simple Example public class rekursi { static void rekursi( ) { System. out. println("ini rekursif"); rekursi( ); //RECURSIVE CALL } public static void main(String[] args) { rekursi( ); } }
Triangle �Triangel number : 1, 3, 6, 10, 15, 21, … �Ada yang tahu lanjutannya ?
Algoritma triangle �n=1 1 = 1 �n=2 3 = 2+1 �n=3 6 = 3+2+1 �n=4 10 = 4+3+2+1 �dst
Gambar triangle
Triangle dengan iterasi int triangle(int n) { int total = 0; while(n > 0) // until n is 1 { total = total + n; // add n (column height) to total --n; // decrement column height } return total; }
Triangle dengan rekursi �Triangle bisa diselesaikan dengan menjumlahkan n dengan total sisa sebelah kanan n
int triangle(int n) { return(n+sum. Remaining. Columns(n)); //(incomplete version) } int triangle(int n) { return(n+sum. All. Columns(n-1)); // (incomplete version) }
int triangle(int n) { return( n + triangle(n-1) ); // (incomplete version) } int triangle(int n) { if(n == 1) return 1 return( n + triangle(n-1) ); // (incomplete version) }
Source code int triangle(int n) { int x, y; if( n == 1 ) return ( 1 ); x = n – 1; y = triangle( x ); return ( n + y ); }
Latihan tracing rekursi
Faktorial ALGORITMA SOURCE CODE n! = 1 if n == 0 n! = n * ( n – 1 )! if n > 0 4! = 4 x 3! 3! = 3 x 2! 2! = 2 x 1! 1! = 1 x 0! 0! = 1 int factorial ( int n ) { int x, y; if ( n == 0 ) return ( 1 ); x = n – 1; y = factorial ( x ); return ( n * y ); }
Latihan tracing rekursi
Perkalian ALGORITMA SOURCE CODE a * b = a if b == 1 a * b = a * ( b – 1 ) + a if b > 1 6 x 3=(6 x 2)+6 =(6 x 1)+6+6 =6+6+6 = 18 int mult ( int x, int y ) { int a, b, sum; if(y==1) return (x); a = y-1; b = multiple(x, a); sum = x + b; return (sum); }
Latihan tracing rekursi
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
SOURCE CODE TRIANGLE Int triangle(int n) { int x, y; if( n == 1 ) return ( 1 ); x = n – 1; y = triangle( x ); return ( n + y ); } SOURCE CODE multiple SOURCE CODE FACTORIAL int multiple( int x, int y ) int factorial ( int n ) { int a, b, sum; { if(y==1) int x, y; return (x); if ( n == 0 ) return ( 1 ); x = n – 1; y = factorial ( x ); return ( n * y ); a = y-1; b = multiple(x, a); sum = x + b; } return (sum); }
- Fungsi rekursif
- Rekurens adalah
- Contoh flowchart fungsi rekursif
- Contoh algoritma rekursif
- Pengertian fungsi rekursif
- Pada pertemuan kali ini kita
- Tugas pertemuan 9 metode perancangan program
- Penawaran elastis uniter terjadi jika
- Spk latihan pertemuan 6
- Denah ruang pertemuan
- Sell adalah pertemuan antara
- Tester
- Bentuk penyajian data yang berupa balok-balok disebut
- Pengertian etiket
- Sel adalah pertemuan antara titik-titik dan titik-titik
- Hiperbola majas
- Sukrosa
- Susunan acara pkh
- Pertemuan 9
- Pendekatan kontribusi
- Deklarasi array x adalah
- Tugas statistika pertemuan 2
- Logo pertemuan
- Diketahui float a 5