You are on page 1of 5

BAB IX

REKURSIF (RECURSIVE)

9.1 DEFINISI

Suatu entitas disebut rekursif jika dalam pendefinisian entitas


tersebut terkandung entitas tersebut. Dalam entitas seperti prosedur,
fungsi, dan struktur data dapat terjadi rekursif. Prosedur dan fungsi
rekursif harus memiliki parameter, tanpa parameter tidak mungkin terjadi
rekursif.
Prosedur rekusif adalah prosedur yang didalam algoritmanya
mengandung nama yang sama dengan nama prosedurnya, dan nama ini
digunakan untuk memanggil dirinya dengan perubahan parameter sampai
kondisi parameter menyebabkan berhenti memanggilnya.
Fungsi rekusif adalah fungsi yang didalam algoritmanya
mengandung nama yang sama dengan nama fungsinya, dan nama ini
digunakan untuk memanggil dirinya dengan perubahan parameter sampai
kondisi parameter menyebabkan berhenti memanggilnya.
Syarat rekursif adalah adanya pemanggilan dirinya dan adanya
kondisi berhentinya pemanggilan. Pemanggilan dilakukan berulang-ulang
sampai kondisinya berhenti. Prosedur dan fungsi rekursi yang jumlah
pemanggilannya terlalu banyak sebaiknya dihindari karena berdampak
pada memory stack yaitu terjadi overflow (diluar batas kemampuan
memory ) dari stack yang tersedia.

9.2 NOTASI ALGORITMA UNTUK PROSEDUR REKURSIF

Berikut adalah aturan untuk membuat suatu prosedur rekursif


dengan notasi pseudocode, yaitu hampir sama dengan aturan notasi untuk
membuat prosedur yaitu sebagai berikut;

Cara mendefinisikan prosedur rekursif;

Prosedur NamaProsedur(DaftarParameterFormal:tipeData)
{ Deskripsi proses keadaan awal menjadi keadaan akhir }

Deklarasi Lokal
{ Daftar variabel, konstanta, prosedur, fungsi yang dipakai }

Handout : Algoritma Pemrogram I oleh Ir. Sugiono, MKom


Algoritma Pemrograman Bab 9 hal. 2/5

Algoritma
{ kumpulan aksi }
if (kondisiBerhenti) then
aksi-1 { hasil iterasi terakhir }
else
NamaProsedur(PerubahanParameterFormal)
Aksi-2 { hasil iterasi ke i }

9.3 FLOWCHART UNTUK PROSEDUR REKURSIF

Berikut adalah aturan untuk membuat suatu prosedur rekursif


dengan flowchart, yaitu hampir sama dengan aturan untuk membuat
prosedur yaitu sebagai berikut;

Cara mendefinisikan prosedur rekursif dengan flowchart;


(disini tidak ada loop tapi seakan-akan ada loop dengan pemanggilan)

NamaProsedur

( Parameter Formal)

Daftar variabel lokal

Salah Kondisi Benar


Berhenti

NamaProsedur Aksi akhir

Aksi ke-i

RETURN

Jurusan Teknik Informatika Untag Surabaya oleh Ir. Sugiono, MT


Algoritma Pemrograman Bab 9 hal. 3/5

9.4 NOTASI ALGORITMA UNTUK FUNGSI REKURSIF

Berikut adalah aturan untuk membuat suatu fungsi rekursif dengan


notasi pseudocode, yaitu hampir sama dengan aturan notasi untuk
membuat fungsi yaitu sebagai berikut;

Cara mendefinisikan fungsi rekursif;

Fungsi NamaFungsi(DaftarParameterFormal:tipeData): tipeHasil


{ Deskripsi proses tranformasi relasi masukan ke keluaran }

Deklarasi Lokal
{ Daftar variabel, konstanta, prosedur, fungsi yang dipakai }

Algoritma
{ kumpulan aksi }
if (kondisiBerhenti) then { Basis }
aksi-1 { hasil iterasi terakhir }
else { rekuren }
NamaFungsi(PerubahanParameterFormal)
Aksi-2 { hasil iterasi ke i }

9.5 FLOWCHART UNTUK FUNGSI REKURSIF

NamaFungsi

( Parameter Formal)

Daftar variabel lokal

Salah Kondisi Benar


Berhenti

V=NamaFungsi Aksi akhir

Aksi ke-i

RETURN V

Jurusan Teknik Informatika Untag Surabaya oleh Ir. Sugiono, MT


Algoritma Pemrograman Bab 9 hal. 4/5

9.6 CONTOH ALGORITMA REKURSIF

Berikut diberikan algoritma untuk membedakan program tanpa rekursif,


prosedur rekursif, dan fungsi rekursif dengan kasus faktorial n!

a) Contoh algoritma Program tanpa rekursif

Program Faktorial
{ Jika n=1 maka n!=1 else n! = n * (n-1)! }
Deklarasi
Fak, k : integer
Algoritma :
input(n)
Fak=1; k=1
while (k<=n) do
Fak=Fak * k
k = k +1
output(Fak)

b) Contoh algoritma Prosedur rekursif

Prosedur Faktorial( n: integer, hasil:integer)


{ Jika n=1 maka n!=1 else n! = n * (n-1)! }
Deklarasi
t : integer
Algoritma :
if (n = 1) then
hasil =1
else
Faktorial (n-1, t)
hasil= n * t

c) Contoh algoritma Fungsi rekursif

Fungsi Faktorial( n: integer) : integer


{ Jika n=1 maka n!=1 else n! = n * (n-1)! }
Deklarasi
t : integer
Algoritma :
if (n = 1) then
Faktorial =1
else
Faktorial = n* Faktorial (n-1)

Jurusan Teknik Informatika Untag Surabaya oleh Ir. Sugiono, MT


Algoritma Pemrograman Bab 9 hal. 5/5

9.7 LATIHAN
Buat algoritma & flowchart untuk membuat prosedur dan fungsi rekursif
dari permasalahan berikut;
1. Menghitung deret bilangan asli sampai ke n
2. Menghitung deret Fibonacci
3. Buat array dimensi satu sebanyak 10 elemen, kemudian isilah
setiap elemen dengan nomor induk teman dekat anda. Buatlah
prosedur rekursif untuk menampilkan semua nomor induk
tersebut

9.8 TUGAS RUMAH


Buat algoritma & flowchart untuk membuat prosedur dan fungsi rekursif
dari permasalahan berikut;
1. Menghitung deret bilangan prima sampai ke n

Jurusan Teknik Informatika Untag Surabaya oleh Ir. Sugiono, MT