Rekursif
Topik kita kali ini adalah program rekursif. Program rekursif adalah program yang memanggil dirinya sendiri berulang-ulang. Program rekursif ini menggunakan fungsi dan prosedur. Fungsi dan Prosedur ini merupakan sub program. Manfaat dari penggunaan Fungsi atau Prosedur adalah
- Mempermudah pembacaan program atau readibility
- Mempermudah penge-check-an program karena program terdiri dari modul-modul kecil atau modularity
- Dapat digunakan berulang kali tanpa menuliskannya berulang-ulang atau reusability
Berikut ini adalah contoh program rekursif :
Karena saya lagi senang-senang nya menggunakan situs Coding Ground, maka program-program berikut ini saya coba dengan compiler online Coding Ground bahasa PASCAL.
{Program menuliskan kata berulang-ulang}
Program tuliskata;
var jum:integer; kt:string;
{Procedure rekursif untuk menuliskan kata}
Procedure tulis(banyak:integer;kata:string);
begin
{Bagian dari procedure yang memanggil dirinya sendiri}
if banyak>1 then tulis(banyak-1,kata);
writeln(kata);
end;
{Program utama}
begin
write('Masukkan kata : ');readln(kt);
write('Masukkan jumlah: ');readln(jum);
{Bagian yang memanggil procedure rekursif}
tulis(jum,kt);
end.
Program berikut ini adalah program perkalian 2 buah bilangan, contoh: 3 x 2 = 3 + 3 = 6. Bagian yang di-rekursif-kan (diulang-ulang) adalah penambahan bilangan tersebut sejumlah pengali-nya.
{Program perkalian dua buah bilangan}
Program perkalian;
var bil1,bil2,hasil:integer;
{Function rekursif untuk penambahan bilangan}
Function kali(angka1,angka2:integer):integer;
begin
{bagian dari Function rekursif yang memanggil dirinya sendiri}
if angka2>=1 then kali:=angka1+kali(angka1,angka2-1);
end;
{Program utama}
begin
write('Masukkan bilanga 1: '); readln(bil1);
write('Masukkan bilanga 2: '); readln(bil2);
{bagian yang memanggil Function rekursif}
hasil:=kali(bil1,bil2);
writeln('Hasil perkalian : ',hasil);
end.
Perhatikan beda penulisan antara procedure dan function.
{Procedure tidak membutuhkan penulisan hasil}
Procedure tulis(banyak:integer;kata:string);
begin
{pemanggilan procedure tidak perlu penampung}
if banyak>1 then tulis(banyak-1,kata);
writeln(kata);
end;
{Function memberikan hasil - lihat bagian yang digarisbawahi}
Function kali(angka1,angka2:integer):integer;
begin
{pemanggilan function perlu variabel penampung - lihat yang digarisbawahi}
if angka2>=1 then kali:=angka1+kali(angka1,angka2-1);
end;
Dari pembahasan diatas, coba Anda buat latihan berikut ini, Anda diijinkan untuk membuat program dengan berbagai bahasa pemrograman, PASCAL, C++, FORTRAN atau DELPHI. Posting jawaban Anda pada komentar dibawah ini.
- Buatlah program rekursif untuk bilangan pangkat, contoh 5^3 = 5 x 5 x 5 = 125
- Buatlah program rekursif untuk bilangan faktorial, contoh5! = 5 x 4 x 3 x 2 x 1 = 120
- Buatlah program rekursif untuk susunan permutasi, contoh A, B, C mempunyai susunan permutasi A-B-C, A-C-B, B-A-C, B-C-A, C-A-B dan C-B-A.
- Buatlah program rekursif untuk menara hanoi.
Oya, Anda diminta membuat lo... bukan meng-copy paste ya.... #yukbelajar!
Selamat mencoba...
2 komentar:
Faktorial
var a : longint;
function handsome(x:longint):longint;
var i,j,k : longint;
begin
if x=0 then
handsome:=1
else
handsome:=(x * handsome(x-1));
end;
begin
writeln ('Masukkan angka');
readln (a);
writeln (handsome(a));
end.
Program perpangkatan;
var bil,pkt:integer;
Function pangkat(angka1,angka2:integer):integer;
begin
if angka2>=1 then pangkat:=angka1*pangkat(angka1,angka2-1) else pangkat:=1;
end;
begin
write('Masukan bilangan : ');readln(bil);
write('Masukan pangkat : ');readln(pkt);
writeln('Hasil perpangkatan : ',pangkat(bil,pkt));
end.
Posting Komentar
Catatan: Hanya anggota dari blog ini yang dapat mengirim komentar.