Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehYenny Tedjo Telah diubah "7 tahun yang lalu
1
Pertemuan 1 Rekursi jual [Valdo] Lunatik Chubby Stylus
2
Fungsi Rekursif Definisi fungsi rekursif. Contoh 1 : Triangle
Contoh 2 : Faktorial Contoh 3 : Perkalian Contoh 4 : Fibonacci Contoh 5 : Tower of Hanoi
4
Fungsi Rekursif Fungsi biasa dipanggil oleh fungsi lain. Sedangkan fungsi rekursif dipanggil oleh dirinya sendiri. A B C D A A A A
5
Triangel number : 1, 3, 6, 10, 15, 21, … Ada yang tahu lanjutannya ?
6
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
7
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
8
Simple Example public class rekursi { static void rekursi( )
{ System.out.println("ini rekursif"); rekursi( ); //RECURSIVE CALL } public static void main(String[] args) { rekursi( );
9
Triangle Triangel number : 1, 3, 6, 10, 15, 21, …
Ada yang tahu lanjutannya ?
10
Algoritma triangle n=1 1 = 1 n=2 3 = 2+1 n=3 6 = 3+2+1
dst
11
Gambar triangle
12
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;
13
Triangle dengan rekursi
Triangle bisa diselesaikan dengan menjumlahkan n dengan total sisa sebelah kanan n
14
return(n+sumRemainingColumns(n)); //(incomplete }
int triangle(int n) { return(n+sumRemainingColumns(n)); //(incomplete version) } int triangle(int n) { return(n+sumAllColumns(n-1));// (incomplete version) }
15
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) }
16
Source code int triangle(int n) { } int x,y; if( n == 1 )
return ( 1 ); x = n – 1; y = triangle( x ); return ( n + y ); }
17
Latihan tracing rekursi
18
Faktorial ALGORITMA 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 SOURCE CODE int factorial ( int n ) { int x, y; if ( n == 0 ) return ( 1 ); x = n – 1; y = factorial ( x ); return ( n * y ); }
19
Latihan tracing rekursi
20
Perkalian ALGORITMA 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 ) = = 18 SOURCE CODE 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); }
21
Latihan tracing rekursi
22
resume Kelebihan : Kekurangan :
Program menjadi lebih singkat/sederhana Dalam beberapa kasus 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
23
SOURCE CODE multiple int factorial ( int n ) { int x, y; if ( n == 0 )
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 int multiple( 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); } SOURCE CODE FACTORIAL int factorial ( int n ) { int x, y; if ( n == 0 ) return ( 1 ); x = n – 1; y = factorial ( x ); return ( n * y ); }
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.