Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Pertemuan 1 Rekursi jual [Valdo] Lunatik Chubby Stylus.

Presentasi serupa


Presentasi berjudul: "Pertemuan 1 Rekursi jual [Valdo] Lunatik Chubby Stylus."— Transcript presentasi:

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

3

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


Download ppt "Pertemuan 1 Rekursi jual [Valdo] Lunatik Chubby Stylus."

Presentasi serupa


Iklan oleh Google