Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehGabriel Yuniar Telah diubah "9 tahun yang lalu
1
LOGIKA DAN ALGORITMA - PERTEMUAN 8 - REKURSI
2
Pengantar Rekursi adalah proses dimana sebuah subprogram yang memanggil dirinya sendiri. Rekursif menyelesaikan masalah dengan menggunakan konsep tumpukan. Adapun syarat suatu subprogram dapat disebut subprogram rekursi : Subprogram itu memanggil dirinya sendiri. Terdapat anchor (kondisi dimana fungsi rekursi selesai) untuk menghentikan proses rekursi. Namun, penggunaan rekursi tidak dianjurkan, karena lebih banyak menggunakan sumber daya memori saat program dijalankan.
3
Contoh Rekursi (1) n! = n*(n-1)! , jika n>1
Faktorial Fungsi faktorial dari bilangan bulat positif n didefinisikan sbb : n! = n*(n-1)! , jika n>1 n! = 1 , jika n = 0, n=1
4
Fungsi Menghitung Faktorial
Function Faktorial (input integer) integer Deklarasi {tidak ada} Deskripsi If (n = 0) or (n = 1) then Return(1) Else Return(n*Faktorial(n-1)) Endif Jika n diinputkan oleh dengan angka 5, bagaimana hasilnya ? N = 5 : nilai kembalian 5*faktorial(4) N = 4 : nilai kembalian 4*faktorial(3) N = 3 : nilai kembalian 3*faktorial(2) N = 2 : nilai kembalian 2*faktorial(1) N = 1 : nilai kembalian 1 Hasil : 120
5
Kondisi tumpukan rekursi faktorial
Di dalam memori komputer saat rekursi ini dieksekusi akan membentuk stack (tumpukan). N Faktorial N=1 1 N=2 2 * Faktorial(1) N=3 3 * Faktorial(2) N=4 4 * Faktorial(3) N=5 5 * Faktorial(4)
6
Bagan pemanggilan modul rekursi
Instruksi 1 Instruksi 2 Call Modul 1 End Modul 1 Instruksi 1 Instruksi 2 Call Modul 1 End Modul 1 Instruksi 1 Instruksi 2 Call Modul 1 End Modul 1 Instruksi 1 Instruksi 2 Call Modul 1 End Modul 1 Instruksi 1 Instruksi 2 ……… End Modul 1 N=5 N=4 N=3 N=2 N=1
7
Contoh Rekursif(2) Procedure rekursi (input n:integer) Deklarasi
{tidak ada} Deskripsi Write(n) If(n<5) then Rekursi(n+1) End if Jika n diinputkan oleh user dengan angka 1, bagaimana hasilnya ? N = 1 : Cetak 1 (1<5) rekursi(1+1)=2 N = 2 : Cetak 2 (2<5) rekursi(2+1)=3 N = 3 : Cetak 3 (3<5) rekursi(3+1)=4 N = 4 : Cetak 4 (4<5) rekursi(4+1)=5 N = 5 : Cetak 5 (5<5) SALAH STOP Hasil : 1, 2, 3, 4, 5
8
Contoh Rekursif(3) Procedure rekursi (input n:integer) Deklarasi
{tidak ada} Deskripsi If(n<5) then Write(n) Rekursi(n+1) End if Jika n diinputkan oleh user dengan angka 1, bagaimana hasilnya ? N=1 (1<5) Cetak 1 rekursi(1+1)=2 N=2 (2<5) Cetak 2 rekursi(2+1)=3 N=3 (3<5) Cetak 3 rekursi(3+1)=4 N=4 (4<5) Cetak 4 rekursi(4+1)=5 N=5 (5<5) SALAH STOP Hasil : 1,2,3,4
9
Contoh Rekursif (4) Procedure rekursi (input n:integer) Deklarasi
{tidak ada} Deskripsi If(n<5) then Rekursi(n+1) End if Write(n) Jika n diinputkan oleh user dengan angka 1, bagaimana hasilnya ? N=1 (1<5) rekursi(1+1)=2 N=2 (2<5) rekursi(2+1)=3 N=3 (3<5) rekursi(3+1)=4 N=4 (4<5) rekursi(4+1)=5 N=5 (5<5) SALAH STOP Cetak 5 Cetak 4 Cetak 3 Cetak 2 Cetak 1 Hasil : 5, 4, 3, 2, 1 (Ingat Konsep Stack !!)
10
LATIHAN 8 Dengan menggunakan rekursif, tampilkan deret fibonacci sebagai berikut : Input = 10 Output = 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 Output = 55, 34, 21, 13, 8, 5, 3, 2, 1, 1
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.