FUNGSI REKURSIF
Pada praktikum Algoritma Pemrograman II ini
dibahas mengenai Fungsi Rekursif.
Apa sih Fungsi Rekursif itu sendiri?
Rekursif merupakan alat untuk memecahkan masalah dalam suatu fungsi atau
prosedur yang memanggil dirinya sendiri, oleh karena itu algoritma rekursif
harus dinyatakan dalam prosedur atau fungsi, karena hanya prosedur dan fungsi
yang dapat dipanggil dalam sebuah program. Fungsi mengembalikan sebuah nilai
sedangkan prosedur menghasilkan efek netto. Penggunaan rekursif kadang-kadang harus
mengobarkan efisiensi dan kecepatan, disamping itu ada masalah yang sering
muncul dalam rekursif yaitu eksekusi yang tidak pernah berhenti. Fungsi
rekursif sendiri dapat ditemukan pada fungsi factorial. Secara umum, skema
dasar fungsi rekursif yaitu :
Gambar
1. 1. Skema dasar
fungsi Rekursif
Peubah x adalah parameter pemanggilan prosedur
(dapat berupa parameter by value atau parameter by reference), R1 dan R2
masing-masing adalah prosedur(sekumpulan instruksi) yang dipanggil sebelum dan
sesudah pemanggilan rekursif, g adalah fungsi yang fungsi yang mengubah nilai
parameter x dan T adalah fungsi untuk
kasus basis dan N adalah fungsi jika kasus basis tercapai.
Untuk lebih jelasnya mengenai fungsi rekursif,
berikut ini adalah listring program yang dibuat pada saat praktikum hari ini :
Gambar 1. 2. Source code fungsi faktorial
Didalam fungsi faktorial terdapat
instruksi-instruksi yang meliputi :
a.
int
hasil;
: yaitu mendeklarasikan variabel baru hasil untuk menampung
hasil dari proses perhitungan data.
b.
if
(a<=1) , {hasil = 1;} : sama dengan fungsi FPB, pada fungsi
faktorial juga menggunakan statement
pengendalian perintah if untuk memilih satu dari dua
alternatif jawaban yang tersedia yaitu dengan kondisi a
lebih kecil sama dengan 1 maka hasil sama dengan 1,
tetapi jika a tidak sesuai dengan kondisi yaitu jika a
lebih besar sama dengan 1 maka program akan mengerjakan
pernyataan ke-2 yaitu else {hasil = a*faktorial(a-1);} artinya
hasil diperoleh dari variabel a dikalikan dengan faktorial(a-1);.
c.
return
(hasil);
: digunakan untuk mengembalikan nilai hasil dari pemanggilan fungsi faktorial.
Nilai yang dihasilkan kemudian dibawa ke cout << "Faktorial
" << n <<"! = " << faktorial(n);.
Setelah membuat program fungsi faktorial,
selanjutnya membuat program untuk menghitung kombinasi. Berikut source code programnya :
Gambar 1. 3. Source code fungsi
kombinasi
Berikut ini penjelasan dari instruksi-instruksi
yang berada didalam fungsi kombinasi yaitu :
a.
if
(a < b) ,return 0; :fungsi kombinasi juga menggunakan statement pengendalian perintah if
dengan kondisi true dimana jika
variabel a lebih kecil dari b maka
nilai yang dihasilkan akan mengembalikan nilai nol, tetapi jika kondisi false else , return( faktorial (a) / (faktorial
(b) * faktorial (a-b))); maka nilai yang akan dikembalikan
adalah hasil dari nilai pemanggilan fungsi faktorial.
b.
Setelah nilai didapat, nilai tersebut dikembalikan atau dibawa ke cout << "Kombinasi
("<<a<<","<<b<<") = " <<
kombinasi(a, b);.
Setelah membuat fungsi kombinasi selanjutnya
membuat source code program permutasi. Source
code programnya yaitu :
Gambar 1. 4. Source code fungsi permutasi
Didalam fungsi permutasi terdapat
instruksi-instruksi yang meliputi :
a.
if
(n<r) , return 0;
: dalam fungsi ini masih menggunakan perintah if
dengan kondisi jika variabel n lebih kecil dari
variabel r maka akan mengembalikan nilai nol,
tetapi jika kondisi false yaitu n
lebih besar dari r maka pernyataan ke-2 yang akan
dikerjakan yaitu return (faktorial(n) / faktorial (n-r));
, pada saat mengerjakan pernyataan ini, terjadi pemanggilan fungsi faktorial.
b.
Setelah mendapatkan nilai dari proses ini, kemudian nilai yang dihasilkan tersebut dibawa ke cout
<< "Permutasi dari
("<<n<<","<<r<<") = " <<
permutasi(n, r);.
Selain semua fungsi yang telah saya tuliskan
diatas, selanjutnya saya akan menulis fungsi FPB yang juga menggunakan
rekursif, berikut source code programnya :
Gambar 1. 5. Source code fungsi FPB
Penjelasanya
yaitu user meng-input data bilangan ke-1 dengan variabel bil1
bertipe data integer dan bilangan
ke-2 dengan variabel bil2 bertipe data integer sesuai dengan pendeklarasian variabel int bil1,
bil2;.
Setelah meng-input bilangan ke-1 dan
ke-2, kemudian program akan menampilkan hasil dari FPB dari data yang diinputkan cout << "Faktor
Persekutuan Terbesar dari "<<bil1<<" dan
"<<bil2<<" :
" << FPB(bil1, bil2); pada proses ini case 1
memanggil fungsi FPB yang telah dideklarasikan sebelumnya. Fungsi FPB berisi
instruksi-instruksi untuk mencari faktor persekutuan terbesar dari data yang
telah diinputkan, instruksi-instruksi
pada fungsi FPB meliputi :
a.
int
hasil;
: membuat variabel baru yaitu hasil dengan tipe data integer. Variabel ini akan digunakan
untuk menampung data yang telah dilakukan perhitungan.
b.
if
(y == 0) , hasil = x; : menggunakan statement pengendalian
perintah if yang digunakan untuk memilih satu dari
dua alternatif jawaban yang tersedia yaitu jika kondisi variabel y
yang di-input sama dengan nol maka
hasilnya variabel x,
tetapi jika kondisi y yang diinputkan
tidak sama dengan nol maka pernyataan kedua yang dikerjakan yaitu else ,
hasil = FPB(y,(x%y)); misalnya saya menginputkan y=4
dan x=12
maka program akan mengecek pada pernyataan ke-1, karena y tidak
sama dengan nol maka program mengerjakan pernyataan ke-2 yaitu hasil =
FPB(y,(x%y)); sehingga hasil=FPB(4,(12%4)) yaitu
FPB(4,(0)) maka return(hasil);
yaitu mengembalikan nilai yang telah didapat dari hasil yaitu 4.
Oke itu tadi fungsi-fungsi yang dibuat pada saat
praktikum algoritma pemrograman II. Pada praktikum asdos juga memberikan sebuah
tugas yaitu mengabungkan fungsi-fungsi diatas menjadi sebuah menu. Tetapi pada
saat praktikum aku belum bisa sempat menyelesaikan tugas itu hehe so next time
mungkin aku akan memposting listing programnya :D (Puspita).
Tidak ada komentar:
Posting Komentar