Pertemuan 1 Rekursi Fungsi Rekursif Definisi fungsi rekursif

  • Slides: 23
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

Fungsi Rekursif �Fungsi biasa dipanggil oleh fungsi lain. Sedangkan fungsi rekursif dipanggil oleh dirinya

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

�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

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

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

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

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

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

Gambar triangle

Triangle dengan iterasi int triangle(int n) { int total = 0; while(n > 0)

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

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) {

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

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 )

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

Latihan tracing rekursi

Faktorial ALGORITMA SOURCE CODE n! = 1 if n == 0 n! = n

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

Latihan tracing rekursi

Perkalian ALGORITMA SOURCE CODE a * b = a if b == 1 a

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

Latihan tracing rekursi

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

SOURCE CODE TRIANGLE Int triangle(int n) { int x, y; if( n == 1

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); }