SlideShare a Scribd company logo
Modul 11
FUNGSI REKURSIF
11.1 Pengertian Rekursi
Rekursi adalah suatu proses dari fungsi yang memanggil dirinya sendiri. Fungsi
yang seperti ini disebut fungsi rekursif (recursive function). Dalam sebuah fungsi rekursif
pemanggilan dapat terjadi berulang kali. Karena ada proses yang berulang-ulang maka harus
ada suatu kondisi yang mengakhiri prosesnya. Jika tidak, maka proses tidak akan pernah
berhenti sampai memori yang digunakan tidak dapat menampung lagi.
Pemecahan masalah dengan pendekatan rekursif dapat dilakukan jika masalah
tersebut dapat didefinisikan secara rekursif, yaitu masalah dapat diuraikan menjadi masalah
sejenis yang lebih sederhana.
Listing Program 11.1 Contoh Fungsi Rekursi
procedure rekursi(n: integer);
begin
if n > 0 then
begin
writeln('rekursi ',n);
rekursi(n-1);
end;
end;
var p: integer;
begin
p:=3;
rekursi(p);
end.
Hasil Running:
Dalam membuat fungsi rekursi harus ditentukan kondisi perhentian. Pada contoh
listing program 11.1 di atas kondisi perhentiannya adalah jika nilai n sudah lebih kecil atau
sama dengan 0. Setiap kali fungsi memanggil dirinya sendiri, nilai dari n dikurangi dengan
nilai 1, sehingga nilai n akhirnya akan menjadi nol dan proses rekursi akan diakhiri, sehingga
fungsi ini akan memanggil dirinya sendiri sebanyak n kali.
Contoh untuk menggambarkan fungsi rekursif yang sering digunakan adalah fungsi
untuk mendapatkan nilai faktorial dari suatu bilangan bulat.
Listing Program 11.2 Program Faktorial
Hasil Running:
Rekursi 3
Rekursi 2
Rekursi 1
Function faktorial(x: integer): longint;
Begin
If x<= 1 then
Faktorial := 1
Else
Faktorial := x * faktorial(x-1);
End;
Var n:integer;
Begin
Writeln(‘Menghitung N Faktorial (N!)’);
Write(‘Masukkan N : ’); readln(n);
Writeln(n,’ ! = ‘, faktorial(n));
End.
Menghitung N Faktorial (N!)
Masukkan N : 5
5 ! = 120
Program 11.2 di atas dapat dijelaskan sebagai berikut:
1. Fungsi utama memanggil fungsi faktorial() dengan mengirimkan nilai n = 5 untuk
parameter formal x, yang maksudnya akan dilakukan perhitungan sebanyak 5 faktorial.
2. Jika nilai dari x pertama kali yang diberikan oleh fungsi utama bernilai kurang dari atau
sama dengan satu, maka hasil faktorial yang akan diberikan adalah bernilai 1.
3. Jika nilai x pertama kali yang diberikan oleh fungsi utama lebih besar dari 1, maka proses
rekursi akan dilakukan misalnya nilai x = 5 , maka proses rekursi yang pertama adalah:
Faktorial= 5 * faktorial(4);
Proses ini akan memanggil kembali fungsi dirinya sendiri dengan mengirimkan nilai 4
sebagai nilai x yang baru. Karena nilai x masih lebih besar dari 1 maka proses rekursi
kedua akan dilakukan dengan hasilnya adalah 4 * faktorial(3). Untuk x adalah 3, hasil
yang diperoleh oleh rekursi adalah 3 * faktorial(2) dan seterusnya sampai nilai x adalah 1.
Untuk nilai x sama dengan 1 ini, perintah faktorial:=1 akan mengembalikan proses ke
bagian yang memanggilnya.
Hasil akhir dari nilai yang akan dikembalikan oleh fungsi faktorial dari penjelasan di atas
untuk 5 faktorial dapat dituliskan sebagai berikut:
faktorial:= 5 * faktorial(4);
faktorial:= 4 * faktorial(3);
faktorial:= 3 * faktorial(2);
faktorial:= 2 * faktorial(1);
faktorial:= ( 5 * 4 * 3 * 2 * 1);
11.2 Perbandingan Rekursif dengan Iteratif
Kekurangan fungsi rekursif:
1. Memerlukan memory yang lebih banyak untuk menyimpan activation record dan variabel
lokal. Activation record diperlukan waktu proses kembali kepada pemanggil.
2. Memerlukan waktu yang lebih banyak untuk menangani activation record.
Secara umum gunakan penyelesaian rekursif hanya jika:
1. Penyelesaian sulit dilaksanakan secara iteratif.
2. Efisiensi dengan cara rekursif sudah memadai.
3. Efisiensi bukan masalah dibandingkan dengan kejelasan logika program.
Jika sebuah masalah dapat diselesaikan dengan cara iteratif maka gunakan iteratif.
Jika penyelesaian dengan menggunakan iteratif memerlukan algoritma yang relatif rumit
maka dapat dicoba dengan pendekatan rekursif karena rekursif memerlukan sumber daya
yang lebih banyak.
Contoh program untuk membandingkan penggunaan itertif dan rekursif dapat dilihat
dalam program menampilkan deret fibonacci pada listing program 11.3 dan listing program
11.4 bawah ini.
Listing Program 11.3 Program Fibonacci dengan Rekursif
Function Fibo(N:word): word;
Begin
If n< 2 then
Fibo := N;
Else
Fibo := Fibo(N-2) + Fibo(N-1);
End;
Var
N,i : Word;
Begin
Writeln(‘Menampilkan deret Fibonacci’);
Write(‘Batas suku bilangan ke : ‘); readln(N);
Writeln(‘Deret ke ‘,N,‘ = ‘, Fibo(N));
Write(‘Deret fibonacci : ‘);
For i:= 1 to N do
write(fibo(i),’ ‘);
end.
Hasil Running:
Penjelasan program:
Deret fibonacci mempunyai nilai suku-suku bilangan berikut:
0, 1, 1, 2, 3, 5, 8, 13, 21, ............
Ciri khusus deret ini adalah tiap-tiap suku adalah hasil penjumlahan dari nilai dua suku
sebelumnya. Misalnya adalah nilai suku ke dua adalah penjumlahan nilai suku ke 0 (bernilai
0) dengan suku ke 1 (bernilai 1) jadi nilai suku ke 2 adalah sama dengan 1 (0 + 1). Nilai suku
ke tiga adalah nilai suku ke dua ditambah nilai suku ke satu. Misalnya untuk mencari bilangan
fibonacci ke- 5, maka urutan pengerjaannya adalah sebagai berikut:
Dari diagram terlihat bahwa untuk mendapatkan deret ke 5 dari deret fibonacci maka fungsi
fibo(4) dihitung satu kali, fungsi fibo(3) dihitung dua kali, fungsi fibo(2) dihitung tiga kali dan
fungsi fibo(1) dihitung dua kali. Hal ini menyebabkan proses lebih lama dan juga sumber daya
yang dibutuhkan untuk menangani proses ini lebih banyak.
Menampilkan deret Fibonacci
Batas suku bilangan ke : 5
Deret ke 5 = 5
Deret Fibinacci : 1 1 2 3 5
fibo(5)
fibo(3) fibo(4)
fibo(1) fibo(2) fibo(2) fibo(3)
fibo(1) fibo(2)
Listing Program 11.4 Program Fibonacci dengan Iteratif
Hasil Running:
uses wincrt;
Function fibo(n : word): word;
Var
fb1, fb2, fn, i : word;
begin
if n< 2 then fibo:=n
else
begin
fb1:= 0;
fb2:= 1;
for i:= 2 to n do begin
fn: = fb1;
fb1:= fb2;
fb2:= fn + fb2;
end;
fibo:= fb2;
end;
end;
var
x, i: word;
begin
writeln('Menampilkan deret Fibonacci'); writeln;
write('Batas suku bilangan ke : '); readln(x);
write('Deret ke ', x, ' = ',fibo(x)); writeln;
write('Deret fibonacci : ');
for i:= 1 to x do
write(fibo(i),' ');
end.
Menampilkan deret Fibonacci
Batas suku bilangan ke : 5
Deret ke 5 = 5
Deret fibonacci : 1 1 2 3 5
Penjelasan Program:
Dari listing program 11.4, terlihat bahwa setiap kali akan menghitung suku ke-n, maka nilai-
nilai suku sebelumnya akan digunakan kembali, yaitu nilai dari n-1(variabel fb1) dan nilai dari
n-2(variabel fb2). Pertama dihitung nilai dari deret ke-n, kemudian nilai dari deret n-1 diberikan
kepada deret n-2, dan nilai dari deret n diberikan kepada deret n-1.
Dengan cara iterasi ini, untuk menghitung nilai fibonacci(5) dapat dilakukan dengan cara:
Fb1(nilai variabel n-1) = 0
Fb2(nilai variabel n-2)=1
Untuk i = 2 (suku ke-2):
Fn = 0
Fb1 = 1
Fb2 = 0+1= 1
Untuk i = 3 (suku ke-3):
Fn = 1
Fb1 = 1
Fb2 = 1+1= 2
Untuk i = 4 (suku ke-4):
Fn = 1
Fb1 = 2
Fb2 = 1+2= 3
Untuk i = 5 (suku ke-5):
Fn = 2
Fb1 = 3
Fb2 = 2+3= 5
Hasil akhirnya adalah Fibo(5) adalah 5
===========
Latihan:
1. Apakah yang dimaksud dengan fungsi yang rekursif?
2. Apa persyaratan masalah untuk bisa diselesaikan dengan cara rekursif
3. Apa kekurangan fungsi rekursif?
4. Jelaskan mengenai activation recors.
5. Apakah lebih baik menulis program dengan menggunakan pendekatan iteratif ataukah
rekursif?
Tugas Mandiri:
1. Buatlah program untuk menghitung kombinasi dan permutasi.
2. Buatlah program untuk menghitung jumlah nilai deret fibonacci dari masukan berupa batas
deret.
==============
Referensi:
Deitel & Deitel, C How to Program 3rd Edition, Prentice Hall, New Jersey, 2001
Jogiyanto, Teori dan Aplikasi Program Komputer Bahasa Turbo Pascal, Andi Offset,
Yogyakarta, 1997
Thompson Susabda Ngoen, Pengantar Algoritma dengan Bahasa C, Salemba Teknika,
Jakarta, 2004
  

More Related Content

What's hot

Jawaban Struktur data soal-latihan
Jawaban Struktur data soal-latihanJawaban Struktur data soal-latihan
Jawaban Struktur data soal-latihan
Bina Sarana Informatika
 
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan AlgoritmaAlgoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
Ari Septiawan
 
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
eddie Ismantoe
 
Pertemuan 6 & 7 ars. gerbang logika
Pertemuan 6 & 7 ars. gerbang logikaPertemuan 6 & 7 ars. gerbang logika
Pertemuan 6 & 7 ars. gerbang logika
Buhori Muslim
 
Metode pencarian heuristik
Metode pencarian heuristikMetode pencarian heuristik
Metode pencarian heuristik
Baguss Chandrass
 
Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...
Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...
Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...Fatma Qolbi
 
Pertemuan 10
Pertemuan 10Pertemuan 10
Pertemuan 10
Muhamad Edi.S
 
Bab 5 penyederhanaan fungsi boolean
Bab 5 penyederhanaan fungsi booleanBab 5 penyederhanaan fungsi boolean
Bab 5 penyederhanaan fungsi boolean
Cliquerz Javaneze
 
Ch 04 (Siklus Instruksi dan Interrupt)
Ch 04 (Siklus Instruksi dan Interrupt)Ch 04 (Siklus Instruksi dan Interrupt)
Ch 04 (Siklus Instruksi dan Interrupt)
Tri Sugihartono
 
Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)
zachrison htg
 
Pengolahan Citra 3 - Operasi-operasi Digital
Pengolahan Citra 3 - Operasi-operasi DigitalPengolahan Citra 3 - Operasi-operasi Digital
Pengolahan Citra 3 - Operasi-operasi Digital
Nur Fadli Utomo
 
2. galat
2. galat2. galat
Pertemuan 02 teori dasar himpunan
Pertemuan 02   teori dasar himpunanPertemuan 02   teori dasar himpunan
Pertemuan 02 teori dasar himpunanFajar Istiqomah
 
Matematika Diskrit - 11 kompleksitas algoritma - 03
Matematika Diskrit - 11 kompleksitas algoritma - 03Matematika Diskrit - 11 kompleksitas algoritma - 03
Matematika Diskrit - 11 kompleksitas algoritma - 03
KuliahKita
 
Makalah aturan trapesium
Makalah aturan trapesiumMakalah aturan trapesium
Makalah aturan trapesium
desita Anggraini
 
SISTEM BUS
SISTEM BUSSISTEM BUS
SISTEM BUS
Robby Hermawan
 
Materi 3 Finite State Automata
Materi 3   Finite State AutomataMateri 3   Finite State Automata
Materi 3 Finite State Automata
ahmad haidaroh
 
Ragam Dialog :: Interaksi Manusia dan Komputer
Ragam Dialog :: Interaksi Manusia dan KomputerRagam Dialog :: Interaksi Manusia dan Komputer
Ragam Dialog :: Interaksi Manusia dan Komputer
Auliaa Oktarianii
 
Analisa masukan dan keluaran 2
Analisa masukan dan keluaran 2Analisa masukan dan keluaran 2
Analisa masukan dan keluaran 2Fera Aghvor
 

What's hot (20)

Jawaban Struktur data soal-latihan
Jawaban Struktur data soal-latihanJawaban Struktur data soal-latihan
Jawaban Struktur data soal-latihan
 
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan AlgoritmaAlgoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
 
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
Modul Pratikum Algoritma dan Pemrograman dalam Bahasa Visual C++ 2010
 
Pertemuan 6 & 7 ars. gerbang logika
Pertemuan 6 & 7 ars. gerbang logikaPertemuan 6 & 7 ars. gerbang logika
Pertemuan 6 & 7 ars. gerbang logika
 
Metode pencarian heuristik
Metode pencarian heuristikMetode pencarian heuristik
Metode pencarian heuristik
 
Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...
Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...
Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...
 
Pertemuan 10
Pertemuan 10Pertemuan 10
Pertemuan 10
 
Bab 5 penyederhanaan fungsi boolean
Bab 5 penyederhanaan fungsi booleanBab 5 penyederhanaan fungsi boolean
Bab 5 penyederhanaan fungsi boolean
 
01 02-pseudocode
01 02-pseudocode01 02-pseudocode
01 02-pseudocode
 
Ch 04 (Siklus Instruksi dan Interrupt)
Ch 04 (Siklus Instruksi dan Interrupt)Ch 04 (Siklus Instruksi dan Interrupt)
Ch 04 (Siklus Instruksi dan Interrupt)
 
Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)
 
Pengolahan Citra 3 - Operasi-operasi Digital
Pengolahan Citra 3 - Operasi-operasi DigitalPengolahan Citra 3 - Operasi-operasi Digital
Pengolahan Citra 3 - Operasi-operasi Digital
 
2. galat
2. galat2. galat
2. galat
 
Pertemuan 02 teori dasar himpunan
Pertemuan 02   teori dasar himpunanPertemuan 02   teori dasar himpunan
Pertemuan 02 teori dasar himpunan
 
Matematika Diskrit - 11 kompleksitas algoritma - 03
Matematika Diskrit - 11 kompleksitas algoritma - 03Matematika Diskrit - 11 kompleksitas algoritma - 03
Matematika Diskrit - 11 kompleksitas algoritma - 03
 
Makalah aturan trapesium
Makalah aturan trapesiumMakalah aturan trapesium
Makalah aturan trapesium
 
SISTEM BUS
SISTEM BUSSISTEM BUS
SISTEM BUS
 
Materi 3 Finite State Automata
Materi 3   Finite State AutomataMateri 3   Finite State Automata
Materi 3 Finite State Automata
 
Ragam Dialog :: Interaksi Manusia dan Komputer
Ragam Dialog :: Interaksi Manusia dan KomputerRagam Dialog :: Interaksi Manusia dan Komputer
Ragam Dialog :: Interaksi Manusia dan Komputer
 
Analisa masukan dan keluaran 2
Analisa masukan dan keluaran 2Analisa masukan dan keluaran 2
Analisa masukan dan keluaran 2
 

Viewers also liked

Moringga plus pp_vf12.11_id
Moringga plus pp_vf12.11_idMoringga plus pp_vf12.11_id
Moringga plus pp_vf12.11_id
moringaplus1malaysia
 
Bilinguism in colombia
Bilinguism in colombiaBilinguism in colombia
Bilinguism in colombia
johana_garcia0111
 
Get up to speed getting the most out of online marketing ivybridge
Get up to speed getting the most out of online marketing ivybridgeGet up to speed getting the most out of online marketing ivybridge
Get up to speed getting the most out of online marketing ivybridge
Get up to Speed
 
The Major Trauma Centre and Youth Violence at St Mary's Hospital
The Major Trauma Centre and Youth Violence at St Mary's HospitalThe Major Trauma Centre and Youth Violence at St Mary's Hospital
The Major Trauma Centre and Youth Violence at St Mary's Hospital
Nicola Jackson
 
Ready to Sell Your House?
Ready to Sell Your House? Ready to Sell Your House?
Ready to Sell Your House?
Yvonne Motley
 
Making The most of online marketing Burnham on sea
Making The most of online marketing Burnham on seaMaking The most of online marketing Burnham on sea
Making The most of online marketing Burnham on sea
Get up to Speed
 
Communication Theories and Models Final Paper
Communication Theories and Models Final PaperCommunication Theories and Models Final Paper
Communication Theories and Models Final Paper
poncemarie
 
Benefits of superfast and day in life buy with confidence - plymouth 29.10
Benefits of superfast and day in life   buy with confidence - plymouth 29.10Benefits of superfast and day in life   buy with confidence - plymouth 29.10
Benefits of superfast and day in life buy with confidence - plymouth 29.10
Get up to Speed
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
Braga Rezpect
 
Voice over On internet wipeout
Voice over On internet wipeoutVoice over On internet wipeout
Voice over On internet wipeout
Grant Denney
 
Activn grazhdanin
Activn grazhdaninActivn grazhdanin
Activn grazhdanin
school853
 
Get Up to Speed - Wellington Benefits of Superfast Broadband
Get Up to Speed - Wellington Benefits of Superfast BroadbandGet Up to Speed - Wellington Benefits of Superfast Broadband
Get Up to Speed - Wellington Benefits of Superfast Broadband
Get up to Speed
 
RED LAN
RED LAN RED LAN
RED LAN
Luzeriin
 
independent Study question project 2
independent Study question project 2independent Study question project 2
independent Study question project 2
Grant Denney
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
Braga Rezpect
 
Artikel reksadana
Artikel reksadanaArtikel reksadana
Artikel reksadana
marinaselviani
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
Braga Rezpect
 
presentation hallal v3
presentation hallal v3presentation hallal v3
presentation hallal v3Hassan Hallal
 
1 job description of medical rep.
1 job description of medical rep.1 job description of medical rep.
1 job description of medical rep.
Tamer Hassan
 
Get up to speed cloud computing and apps yeovil 9.06.15
Get up to speed   cloud computing and apps yeovil 9.06.15Get up to speed   cloud computing and apps yeovil 9.06.15
Get up to speed cloud computing and apps yeovil 9.06.15
Get up to Speed
 

Viewers also liked (20)

Moringga plus pp_vf12.11_id
Moringga plus pp_vf12.11_idMoringga plus pp_vf12.11_id
Moringga plus pp_vf12.11_id
 
Bilinguism in colombia
Bilinguism in colombiaBilinguism in colombia
Bilinguism in colombia
 
Get up to speed getting the most out of online marketing ivybridge
Get up to speed getting the most out of online marketing ivybridgeGet up to speed getting the most out of online marketing ivybridge
Get up to speed getting the most out of online marketing ivybridge
 
The Major Trauma Centre and Youth Violence at St Mary's Hospital
The Major Trauma Centre and Youth Violence at St Mary's HospitalThe Major Trauma Centre and Youth Violence at St Mary's Hospital
The Major Trauma Centre and Youth Violence at St Mary's Hospital
 
Ready to Sell Your House?
Ready to Sell Your House? Ready to Sell Your House?
Ready to Sell Your House?
 
Making The most of online marketing Burnham on sea
Making The most of online marketing Burnham on seaMaking The most of online marketing Burnham on sea
Making The most of online marketing Burnham on sea
 
Communication Theories and Models Final Paper
Communication Theories and Models Final PaperCommunication Theories and Models Final Paper
Communication Theories and Models Final Paper
 
Benefits of superfast and day in life buy with confidence - plymouth 29.10
Benefits of superfast and day in life   buy with confidence - plymouth 29.10Benefits of superfast and day in life   buy with confidence - plymouth 29.10
Benefits of superfast and day in life buy with confidence - plymouth 29.10
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
 
Voice over On internet wipeout
Voice over On internet wipeoutVoice over On internet wipeout
Voice over On internet wipeout
 
Activn grazhdanin
Activn grazhdaninActivn grazhdanin
Activn grazhdanin
 
Get Up to Speed - Wellington Benefits of Superfast Broadband
Get Up to Speed - Wellington Benefits of Superfast BroadbandGet Up to Speed - Wellington Benefits of Superfast Broadband
Get Up to Speed - Wellington Benefits of Superfast Broadband
 
RED LAN
RED LAN RED LAN
RED LAN
 
independent Study question project 2
independent Study question project 2independent Study question project 2
independent Study question project 2
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
 
Artikel reksadana
Artikel reksadanaArtikel reksadana
Artikel reksadana
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
 
presentation hallal v3
presentation hallal v3presentation hallal v3
presentation hallal v3
 
1 job description of medical rep.
1 job description of medical rep.1 job description of medical rep.
1 job description of medical rep.
 
Get up to speed cloud computing and apps yeovil 9.06.15
Get up to speed   cloud computing and apps yeovil 9.06.15Get up to speed   cloud computing and apps yeovil 9.06.15
Get up to speed cloud computing and apps yeovil 9.06.15
 

Similar to Dasar Pemrograman materi kuliah

MAKALAH REKRUSIF (DIKI CANDRA).docx
MAKALAH REKRUSIF (DIKI CANDRA).docxMAKALAH REKRUSIF (DIKI CANDRA).docx
MAKALAH REKRUSIF (DIKI CANDRA).docx
Dikicandra6
 
Materi Rekrusif dengan Python PPTX (materi kuliah)
Materi Rekrusif dengan Python PPTX (materi kuliah)Materi Rekrusif dengan Python PPTX (materi kuliah)
Materi Rekrusif dengan Python PPTX (materi kuliah)
OzanHacker
 
6 rekursif induksi matematik.pdf
6 rekursif  induksi matematik.pdf6 rekursif  induksi matematik.pdf
6 rekursif induksi matematik.pdf
NestyoRizky
 
Python 101: Recursion
Python 101: RecursionPython 101: Recursion
Python 101: Recursion
NaufalPramudyaYusuf
 
Matlab
MatlabMatlab
09 pd fungsi rekursif
09 pd fungsi rekursif09 pd fungsi rekursif
09 pd fungsi rekursif
Sofi Orient
 
Algoritma dan pemograman
Algoritma dan pemogramanAlgoritma dan pemograman
Algoritma dan pemograman
Syahran Mohamed
 
Pengulangan Visual Basic
Pengulangan Visual BasicPengulangan Visual Basic
Pengulangan Visual Basic
Eman Mendrofa
 
Presentation
PresentationPresentation
Presentation
Ainy Sara
 
Tistrukdat9
Tistrukdat9Tistrukdat9
Tistrukdat9
Antonius Rachmat C
 
Algoritma rekursif
Algoritma rekursifAlgoritma rekursif
Rekursi dan relasi rekurens
Rekursi dan relasi rekurensRekursi dan relasi rekurens
Rekursi dan relasi rekurens
Leonardo024
 
INTEGRAL menggunakan MAPLE
INTEGRAL menggunakan MAPLEINTEGRAL menggunakan MAPLE
INTEGRAL menggunakan MAPLEDyas Arientiyya
 
for end.pdf
for end.pdffor end.pdf
for end.pdf
deaarum2
 
Subrutin_Fungsi.pptx
Subrutin_Fungsi.pptxSubrutin_Fungsi.pptx
Subrutin_Fungsi.pptx
AriesAgetia1
 
Deferensial
DeferensialDeferensial
Deferensial
Miftakul Sururi
 
Bab 8 struktur rekursif
Bab 8 struktur rekursifBab 8 struktur rekursif
Bab 8 struktur rekursif
risal07
 
Makalah analisa numerik dan komputasi tugas kelompok
Makalah analisa numerik dan komputasi tugas kelompokMakalah analisa numerik dan komputasi tugas kelompok
Makalah analisa numerik dan komputasi tugas kelompok
Rahmank Sana-sini
 
Pertemuan 12 deret fourier
Pertemuan 12  deret fourierPertemuan 12  deret fourier
Pertemuan 12 deret fourier
Senat Mahasiswa STIS
 
Penyelesaian persamaan non linier
Penyelesaian persamaan non linierPenyelesaian persamaan non linier
Penyelesaian persamaan non linier
yeyen
 

Similar to Dasar Pemrograman materi kuliah (20)

MAKALAH REKRUSIF (DIKI CANDRA).docx
MAKALAH REKRUSIF (DIKI CANDRA).docxMAKALAH REKRUSIF (DIKI CANDRA).docx
MAKALAH REKRUSIF (DIKI CANDRA).docx
 
Materi Rekrusif dengan Python PPTX (materi kuliah)
Materi Rekrusif dengan Python PPTX (materi kuliah)Materi Rekrusif dengan Python PPTX (materi kuliah)
Materi Rekrusif dengan Python PPTX (materi kuliah)
 
6 rekursif induksi matematik.pdf
6 rekursif  induksi matematik.pdf6 rekursif  induksi matematik.pdf
6 rekursif induksi matematik.pdf
 
Python 101: Recursion
Python 101: RecursionPython 101: Recursion
Python 101: Recursion
 
Matlab
MatlabMatlab
Matlab
 
09 pd fungsi rekursif
09 pd fungsi rekursif09 pd fungsi rekursif
09 pd fungsi rekursif
 
Algoritma dan pemograman
Algoritma dan pemogramanAlgoritma dan pemograman
Algoritma dan pemograman
 
Pengulangan Visual Basic
Pengulangan Visual BasicPengulangan Visual Basic
Pengulangan Visual Basic
 
Presentation
PresentationPresentation
Presentation
 
Tistrukdat9
Tistrukdat9Tistrukdat9
Tistrukdat9
 
Algoritma rekursif
Algoritma rekursifAlgoritma rekursif
Algoritma rekursif
 
Rekursi dan relasi rekurens
Rekursi dan relasi rekurensRekursi dan relasi rekurens
Rekursi dan relasi rekurens
 
INTEGRAL menggunakan MAPLE
INTEGRAL menggunakan MAPLEINTEGRAL menggunakan MAPLE
INTEGRAL menggunakan MAPLE
 
for end.pdf
for end.pdffor end.pdf
for end.pdf
 
Subrutin_Fungsi.pptx
Subrutin_Fungsi.pptxSubrutin_Fungsi.pptx
Subrutin_Fungsi.pptx
 
Deferensial
DeferensialDeferensial
Deferensial
 
Bab 8 struktur rekursif
Bab 8 struktur rekursifBab 8 struktur rekursif
Bab 8 struktur rekursif
 
Makalah analisa numerik dan komputasi tugas kelompok
Makalah analisa numerik dan komputasi tugas kelompokMakalah analisa numerik dan komputasi tugas kelompok
Makalah analisa numerik dan komputasi tugas kelompok
 
Pertemuan 12 deret fourier
Pertemuan 12  deret fourierPertemuan 12  deret fourier
Pertemuan 12 deret fourier
 
Penyelesaian persamaan non linier
Penyelesaian persamaan non linierPenyelesaian persamaan non linier
Penyelesaian persamaan non linier
 

More from Braga Rezpect

Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
Braga Rezpect
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
Braga Rezpect
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
Braga Rezpect
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
Braga Rezpect
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
Braga Rezpect
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
Braga Rezpect
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
Braga Rezpect
 
Pertemuan 1 algoritma
Pertemuan 1 algoritmaPertemuan 1 algoritma
Pertemuan 1 algoritma
Braga Rezpect
 

More from Braga Rezpect (8)

Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
 
Pertemuan 1 algoritma
Pertemuan 1 algoritmaPertemuan 1 algoritma
Pertemuan 1 algoritma
 

Dasar Pemrograman materi kuliah

  • 1. Modul 11 FUNGSI REKURSIF 11.1 Pengertian Rekursi Rekursi adalah suatu proses dari fungsi yang memanggil dirinya sendiri. Fungsi yang seperti ini disebut fungsi rekursif (recursive function). Dalam sebuah fungsi rekursif pemanggilan dapat terjadi berulang kali. Karena ada proses yang berulang-ulang maka harus ada suatu kondisi yang mengakhiri prosesnya. Jika tidak, maka proses tidak akan pernah berhenti sampai memori yang digunakan tidak dapat menampung lagi. Pemecahan masalah dengan pendekatan rekursif dapat dilakukan jika masalah tersebut dapat didefinisikan secara rekursif, yaitu masalah dapat diuraikan menjadi masalah sejenis yang lebih sederhana. Listing Program 11.1 Contoh Fungsi Rekursi procedure rekursi(n: integer); begin if n > 0 then begin writeln('rekursi ',n); rekursi(n-1); end; end; var p: integer; begin p:=3; rekursi(p); end.
  • 2. Hasil Running: Dalam membuat fungsi rekursi harus ditentukan kondisi perhentian. Pada contoh listing program 11.1 di atas kondisi perhentiannya adalah jika nilai n sudah lebih kecil atau sama dengan 0. Setiap kali fungsi memanggil dirinya sendiri, nilai dari n dikurangi dengan nilai 1, sehingga nilai n akhirnya akan menjadi nol dan proses rekursi akan diakhiri, sehingga fungsi ini akan memanggil dirinya sendiri sebanyak n kali. Contoh untuk menggambarkan fungsi rekursif yang sering digunakan adalah fungsi untuk mendapatkan nilai faktorial dari suatu bilangan bulat. Listing Program 11.2 Program Faktorial Hasil Running: Rekursi 3 Rekursi 2 Rekursi 1 Function faktorial(x: integer): longint; Begin If x<= 1 then Faktorial := 1 Else Faktorial := x * faktorial(x-1); End; Var n:integer; Begin Writeln(‘Menghitung N Faktorial (N!)’); Write(‘Masukkan N : ’); readln(n); Writeln(n,’ ! = ‘, faktorial(n)); End. Menghitung N Faktorial (N!) Masukkan N : 5 5 ! = 120
  • 3. Program 11.2 di atas dapat dijelaskan sebagai berikut: 1. Fungsi utama memanggil fungsi faktorial() dengan mengirimkan nilai n = 5 untuk parameter formal x, yang maksudnya akan dilakukan perhitungan sebanyak 5 faktorial. 2. Jika nilai dari x pertama kali yang diberikan oleh fungsi utama bernilai kurang dari atau sama dengan satu, maka hasil faktorial yang akan diberikan adalah bernilai 1. 3. Jika nilai x pertama kali yang diberikan oleh fungsi utama lebih besar dari 1, maka proses rekursi akan dilakukan misalnya nilai x = 5 , maka proses rekursi yang pertama adalah: Faktorial= 5 * faktorial(4); Proses ini akan memanggil kembali fungsi dirinya sendiri dengan mengirimkan nilai 4 sebagai nilai x yang baru. Karena nilai x masih lebih besar dari 1 maka proses rekursi kedua akan dilakukan dengan hasilnya adalah 4 * faktorial(3). Untuk x adalah 3, hasil yang diperoleh oleh rekursi adalah 3 * faktorial(2) dan seterusnya sampai nilai x adalah 1. Untuk nilai x sama dengan 1 ini, perintah faktorial:=1 akan mengembalikan proses ke bagian yang memanggilnya. Hasil akhir dari nilai yang akan dikembalikan oleh fungsi faktorial dari penjelasan di atas untuk 5 faktorial dapat dituliskan sebagai berikut: faktorial:= 5 * faktorial(4); faktorial:= 4 * faktorial(3); faktorial:= 3 * faktorial(2); faktorial:= 2 * faktorial(1); faktorial:= ( 5 * 4 * 3 * 2 * 1); 11.2 Perbandingan Rekursif dengan Iteratif Kekurangan fungsi rekursif:
  • 4. 1. Memerlukan memory yang lebih banyak untuk menyimpan activation record dan variabel lokal. Activation record diperlukan waktu proses kembali kepada pemanggil. 2. Memerlukan waktu yang lebih banyak untuk menangani activation record. Secara umum gunakan penyelesaian rekursif hanya jika: 1. Penyelesaian sulit dilaksanakan secara iteratif. 2. Efisiensi dengan cara rekursif sudah memadai. 3. Efisiensi bukan masalah dibandingkan dengan kejelasan logika program. Jika sebuah masalah dapat diselesaikan dengan cara iteratif maka gunakan iteratif. Jika penyelesaian dengan menggunakan iteratif memerlukan algoritma yang relatif rumit maka dapat dicoba dengan pendekatan rekursif karena rekursif memerlukan sumber daya yang lebih banyak. Contoh program untuk membandingkan penggunaan itertif dan rekursif dapat dilihat dalam program menampilkan deret fibonacci pada listing program 11.3 dan listing program 11.4 bawah ini. Listing Program 11.3 Program Fibonacci dengan Rekursif Function Fibo(N:word): word; Begin If n< 2 then Fibo := N; Else Fibo := Fibo(N-2) + Fibo(N-1); End; Var N,i : Word; Begin Writeln(‘Menampilkan deret Fibonacci’); Write(‘Batas suku bilangan ke : ‘); readln(N); Writeln(‘Deret ke ‘,N,‘ = ‘, Fibo(N)); Write(‘Deret fibonacci : ‘); For i:= 1 to N do write(fibo(i),’ ‘); end.
  • 5. Hasil Running: Penjelasan program: Deret fibonacci mempunyai nilai suku-suku bilangan berikut: 0, 1, 1, 2, 3, 5, 8, 13, 21, ............ Ciri khusus deret ini adalah tiap-tiap suku adalah hasil penjumlahan dari nilai dua suku sebelumnya. Misalnya adalah nilai suku ke dua adalah penjumlahan nilai suku ke 0 (bernilai 0) dengan suku ke 1 (bernilai 1) jadi nilai suku ke 2 adalah sama dengan 1 (0 + 1). Nilai suku ke tiga adalah nilai suku ke dua ditambah nilai suku ke satu. Misalnya untuk mencari bilangan fibonacci ke- 5, maka urutan pengerjaannya adalah sebagai berikut: Dari diagram terlihat bahwa untuk mendapatkan deret ke 5 dari deret fibonacci maka fungsi fibo(4) dihitung satu kali, fungsi fibo(3) dihitung dua kali, fungsi fibo(2) dihitung tiga kali dan fungsi fibo(1) dihitung dua kali. Hal ini menyebabkan proses lebih lama dan juga sumber daya yang dibutuhkan untuk menangani proses ini lebih banyak. Menampilkan deret Fibonacci Batas suku bilangan ke : 5 Deret ke 5 = 5 Deret Fibinacci : 1 1 2 3 5 fibo(5) fibo(3) fibo(4) fibo(1) fibo(2) fibo(2) fibo(3) fibo(1) fibo(2)
  • 6. Listing Program 11.4 Program Fibonacci dengan Iteratif Hasil Running: uses wincrt; Function fibo(n : word): word; Var fb1, fb2, fn, i : word; begin if n< 2 then fibo:=n else begin fb1:= 0; fb2:= 1; for i:= 2 to n do begin fn: = fb1; fb1:= fb2; fb2:= fn + fb2; end; fibo:= fb2; end; end; var x, i: word; begin writeln('Menampilkan deret Fibonacci'); writeln; write('Batas suku bilangan ke : '); readln(x); write('Deret ke ', x, ' = ',fibo(x)); writeln; write('Deret fibonacci : '); for i:= 1 to x do write(fibo(i),' '); end. Menampilkan deret Fibonacci Batas suku bilangan ke : 5 Deret ke 5 = 5 Deret fibonacci : 1 1 2 3 5
  • 7. Penjelasan Program: Dari listing program 11.4, terlihat bahwa setiap kali akan menghitung suku ke-n, maka nilai- nilai suku sebelumnya akan digunakan kembali, yaitu nilai dari n-1(variabel fb1) dan nilai dari n-2(variabel fb2). Pertama dihitung nilai dari deret ke-n, kemudian nilai dari deret n-1 diberikan kepada deret n-2, dan nilai dari deret n diberikan kepada deret n-1. Dengan cara iterasi ini, untuk menghitung nilai fibonacci(5) dapat dilakukan dengan cara: Fb1(nilai variabel n-1) = 0 Fb2(nilai variabel n-2)=1 Untuk i = 2 (suku ke-2): Fn = 0 Fb1 = 1 Fb2 = 0+1= 1 Untuk i = 3 (suku ke-3): Fn = 1 Fb1 = 1 Fb2 = 1+1= 2 Untuk i = 4 (suku ke-4): Fn = 1 Fb1 = 2 Fb2 = 1+2= 3 Untuk i = 5 (suku ke-5): Fn = 2 Fb1 = 3 Fb2 = 2+3= 5 Hasil akhirnya adalah Fibo(5) adalah 5 =========== Latihan: 1. Apakah yang dimaksud dengan fungsi yang rekursif? 2. Apa persyaratan masalah untuk bisa diselesaikan dengan cara rekursif
  • 8. 3. Apa kekurangan fungsi rekursif? 4. Jelaskan mengenai activation recors. 5. Apakah lebih baik menulis program dengan menggunakan pendekatan iteratif ataukah rekursif? Tugas Mandiri: 1. Buatlah program untuk menghitung kombinasi dan permutasi. 2. Buatlah program untuk menghitung jumlah nilai deret fibonacci dari masukan berupa batas deret. ============== Referensi: Deitel & Deitel, C How to Program 3rd Edition, Prentice Hall, New Jersey, 2001 Jogiyanto, Teori dan Aplikasi Program Komputer Bahasa Turbo Pascal, Andi Offset, Yogyakarta, 1997 Thompson Susabda Ngoen, Pengantar Algoritma dengan Bahasa C, Salemba Teknika, Jakarta, 2004   