LOGIKA DAN ALGORITMA PERTEMUAN 8 REKURSI Pengantar Rekursi

  • Slides: 10
Download presentation
LOGIKA DAN ALGORITMA - PERTEMUAN 8 REKURSI

LOGIKA DAN ALGORITMA - PERTEMUAN 8 REKURSI

Pengantar � Rekursi adalah proses dimana sebuah subprogram yang memanggil dirinya sendiri. � Rekursif

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.

Contoh Rekursi (1) �Faktorial �Fungsi faktorial dari bilangan bulat positif n didefinisikan sbb :

Contoh Rekursi (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

Fungsi Menghitung Faktorial �Function Faktorial (input integer) integer �Deklarasi �{tidak ada} �Deskripsi �If (n

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

Kondisi tumpukan rekursi faktorial �Di dalam memori komputer saat rekursi ini dieksekusi akan membentuk

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)

Bagan pemanggilan modul rekursi Modul 1 Instruksi 1 Instruksi 2 Call Modul 1 End

Bagan pemanggilan modul rekursi Modul 1 Instruksi 1 Instruksi 2 Call Modul 1 End Modul 1 N=4 N=3 N=2 N=5 Modul 1 Instruksi 2 ……… End Modul 1 N=1

Contoh Rekursif(2) �Procedure rekursi (input n: integer) �Deklarasi �{tidak ada} �Deskripsi �Write(n) �If(n<5) then

Contoh Rekursif(2) �Procedure rekursi (input n: integer) �Deklarasi �{tidak ada} �Deskripsi �Write(n) �If(n<5) then �Rekursi(n+1) �End if

Contoh Rekursif(3) �Procedure rekursi (input n: integer) �Deklarasi �{tidak ada} �Deskripsi �If(n<5) then �Write(n)

Contoh Rekursif(3) �Procedure rekursi (input n: integer) �Deklarasi �{tidak ada} �Deskripsi �If(n<5) then �Write(n) �Rekursi(n+1) �End if

Contoh Rekursif (4) �Procedure rekursi (input n: integer) �Deklarasi �{tidak ada} �Deskripsi �If(n<5) then

Contoh Rekursif (4) �Procedure rekursi (input n: integer) �Deklarasi �{tidak ada} �Deskripsi �If(n<5) then �Rekursi(n+1) �End if �Write(n)

LATIHAN 8 �Dengan menggunakan rekursif, tampilkan deret fibonacci sebagai berikut : �Input = 10

LATIHAN 8 �Dengan menggunakan rekursif, tampilkan deret fibonacci sebagai berikut : �Input = 10 �Output = 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 �Dengan menggunakan rekursif, tampilkan deret fibonacci sebagai berikut : �Input = 10 �Output = 55, 34, 21, 13, 8, 5, 3, 2, 1, 1