RSS

Klub IT

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

  1. Mempermudah pembacaan program atau readibility
  2. Mempermudah penge-check-an program karena program terdiri dari modul-modul kecil atau modularity
  3. 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.
  1. Buatlah program rekursif untuk bilangan pangkat, contoh 5^3 = 5 x 5 x 5 = 125
  2. Buatlah program rekursif untuk bilangan faktorial, contoh5! = 5 x 4 x 3 x 2 x 1 = 120
  3. 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.
  4. Buatlah program rekursif untuk menara hanoi.
Apa sih menara hanoi itu ? Lihat pembahasan berikut.

Oya, Anda diminta membuat lo... bukan meng-copy paste ya.... #yukbelajar!
Selamat mencoba...

| 1 | 2 | 3 |

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

2 komentar:

Unknown mengatakan...

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.

Tintin mengatakan...

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.