MATERI 9 FUNGSI REKURSIF Pengantar Rekursif merupakan suatu

  • Slides: 15
Download presentation
MATERI 9 FUNGSI REKURSIF

MATERI 9 FUNGSI REKURSIF

Pengantar • Rekursif merupakan suatu metode pada procedure atau function yang di dalamnya terdapat

Pengantar • Rekursif merupakan suatu metode pada procedure atau function yang di dalamnya terdapat perintah untuk memanggil procedure atau function itu sendiri. • Contoh sederhana : def a(p) = if p=0 then exit fi printnumber(p); a(p-1); enddef a(5); Program 9. 1 base Rekursif

Pengantar • Pada pemanggilan pertama a(5), definisi a akan dijalankan yang pada awal definisi

Pengantar • Pada pemanggilan pertama a(5), definisi a akan dijalankan yang pada awal definisi akan mencetak nilai p, yaitu 5. • Setelah itu ada pemanggilan definisi a lagi dengan parameternya adalah p-1 yaitu 4. Pemanggilan definisi a ini akan menjalankan definisi a, kali ini dengan nilai p adalah 4. Yang dicetak di layar adalah nilai p yaitu 4. • Setelah itu kembail terjadi pemanggilan definisi a dengan parameter p-1, yaitu 3. • Proses ini berulang lagi, dengan mencetak nilai 3 kemudian memanggil a dengan parameter 2. • Begitu seterusnya secara berulang-ulang.

Penentuan Kondisi • Program 9. 1 merupakan contoh program rekursif namun masih memiliki cacat,

Penentuan Kondisi • Program 9. 1 merupakan contoh program rekursif namun masih memiliki cacat, yaitu perulangan yang terjadi tidak akan pernah berhenti karena dengan nilai parameter berapapun, pasti terjadi proses rekursif (pemanggilan kembali definisi a). • Untuk melengkapi definisi a, perlu ditentukan kapan dilakukan proses rekursif dan kapan tidak. Jika misalnya diinginkan untuk melakukan proses rekursif selama nilai parameter yang diberikan > 0 maka Program 9. 1 dapat dilengkapi seperti pada Program 9. 2.

Penentuan Kondisi def a(p) = printnumber(p); if (p>1) then a(p-1) fi enddef a(5); Program

Penentuan Kondisi def a(p) = printnumber(p); if (p>1) then a(p-1) fi enddef a(5); Program 9. 2 Base Rekursif

Penentuan Kondisi n n Dengan demikian proses rekursif hanya akan terjadi pada saat nilai

Penentuan Kondisi n n Dengan demikian proses rekursif hanya akan terjadi pada saat nilai p > 0, yaitu mulai dari pemanggilan pertama, 5, kemudian pada saat rekursif dengan nilai p = 4, p = 3, p = 2 dan p = 1. Pada saat pemanggilan a(p) dengan nilai p adalah 1, maka yang dikerjakan adalah mencetak nilai p, yaitu 1. Setelah itu karena kondisi (p>1) untuk nilai p=1 akan bernilai false maka tidak akan terjadi proses rekursif. Penentuan kondisi ini merupakan hal yang sangat penting dan harus dituliskan dengan benar untuk menghindarkan program dari kesalahan. Proses rekursif akan memberikan solusi yang sulit diselesaikan dengan menggunakan repetition biasa. Misalnya pada kasus menghitung faktorial.

Pengertian Rekursif • Program yang dalam prosesnya memanggil dirinya sendiri, tetapi dengan nilai parameter

Pengertian Rekursif • Program yang dalam prosesnya memanggil dirinya sendiri, tetapi dengan nilai parameter yang berbeda. • 2 hal yang harus diperhatikan – Ada nilai batas (base) – Fungsi rekursifnya konvergen (mendekat) ke arah nilai batas

Rekursif dengan simbol matematika • Dalam matematika rekursif biasa disimbolkan seperti berikut ini base

Rekursif dengan simbol matematika • Dalam matematika rekursif biasa disimbolkan seperti berikut ini base rekursif • Kalau diberikan x=5 maka nilai fungsi tersebut f(5) = 5 * f(4) 5*24 = 120 f(4) = 4 * f(3) 4 * 6 = 24 f(3) = 3 * f(2) 3*2=6 f(2) = 2 * f(1) 2*1 = 2 f(1) = 1 Jadi hasilnya f(5) = 120 sama saja dengan 1*2*3*4*5

Rekursif pada Pascal n Program 9. 3 merupakan contoh program rekursif pada bahasa Pascal

Rekursif pada Pascal n Program 9. 3 merupakan contoh program rekursif pada bahasa Pascal untuk menghitung hasil faktorial dari suatu bilangan.

uses crt; function f(n : integer); begin if (n=1) then f : = 1;

uses crt; function f(n : integer); begin if (n=1) then f : = 1; else f : = n * f(n-1); end; BEGIN write(f(5)); END. Program 9. 3 • Bandingkan dengan simbol matematika di hal 8 dan eksekusinya

n Output Program 9. 3 : Pemanggilan f(5) : = 5 * f(4) =

n Output Program 9. 3 : Pemanggilan f(5) : = 5 * f(4) = 5 * 4 * f(3) = 5 * 4 * 3 * f(2) = 5 * 4 * 3 * 2 * f(1) =5*4*3*2*1 = 120

Latihan 1 • Terjemahkan dalam Rekursif (menggunakan pascal) untuk menghitung apa f(x, y) berikut

Latihan 1 • Terjemahkan dalam Rekursif (menggunakan pascal) untuk menghitung apa f(x, y) berikut ini ? • Ubah program pascal tersebut dengan menggunakan perintah perulangan while … do atau for • Buatlah tabel analisis untuk membuktikan bahwa program yang anda buat adalah benar dengan f(3, 5)!

Latihan 2 • Terjemahkan dalam Rekursif (menggunakan pascal) untuk menghitung apa f(k) berikut ini

Latihan 2 • Terjemahkan dalam Rekursif (menggunakan pascal) untuk menghitung apa f(k) berikut ini ? • Tuliskan langkah-langkah eksekusinya dengan tabel analisis (agar mengerti) untuk f(5)

Latihan 3 • Terjemahkan dalam Rekursif (menggunakan pascal) untuk menghitung bilangan berpangkat x^(n)? •

Latihan 3 • Terjemahkan dalam Rekursif (menggunakan pascal) untuk menghitung bilangan berpangkat x^(n)? • Buatlah tabel analisis untuk program di atas jika diketahui 4^8.

-selesai-

-selesai-