fbpx

Algoritma dan Pemrogaman : Prosedur Rekursif

Seperti yang telah dibahas pada artikel sebelumnya, prosedur juga dapat bersifat rekursif, perhatikan contoh berikut ini.

PROCEDURE TULIS_1(banyak : integer; kata : string); 
begin 
  if banyak > 1 then 
     TULIS_1(banyak-1,kata); 
     writeln(kata, banyak); 
end;

misal jika dipanggil TULIS_1(5, ‘Cetakan ke ‘) maka outputnya adalah:

Cetakan ke 1 
Cetakan ke 2 
Cetakan ke 3 
Cetakan ke 4 
Cetakan ke 5

Mengapa bisa demikian? Begini kira-kira jalannya prosedur:

  1. Tulis_1(5, ‘Cetakan ke ‘) pada bagian if akan bernilai TRUE sehingga memanggil Tulis_1(4, ‘Cetakan ke ‘)
  2. Tulis_1(4, ‘Cetakan ke ‘) pada bagian if akan bernilai TRUE sehingga memanggil Tulis_1(3, ‘Cetakan ke ‘)
  3. Tulis_1(3, ‘Cetakan ke ‘) pada bagian if akan bernilai TRUE sehingga memanggil Tulis_1(2, ‘Cetakan ke ‘)
  4. Tulis_1(2, ‘Cetakan ke ‘) pada bagian if akan bernilai TRUE sehingga memanggil Tulis_1(1, ‘Cetakan ke ‘)
  5. Tulis_1(1, ‘Cetakan ke ‘) pada bagian if akan bernilai FALSE sehingga lanjut ke statemen selanjutnya yaitu writeln(kata, banyak) yang akan menuliskan Cetakan ke 1 di layar. Prosedur Tulis_1(1, ‘Cetakan ke ‘) selesai dijalankan dan kembali ke pemanggilnya yaitu Tulis_1(2, ‘Cetakan ke ‘)
  6. Tulis_1(2, ‘Cetakan ke ‘) sudah selesai menjalankan bagian if, kemudian masuk ke writeln(kata, banyak) yang akan menuliskan Cetakan ke 2 di layar. Prosedur Tulis_1(2, ‘Cetakan ke ‘) selesai dijalankan dan kembali ke pemanggilnya yaitu Tulis_1(3, ‘Cetakan ke ‘)
  7. Tulis_1(3, ‘Cetakan ke ‘) sudah selesai menjalankan bagian if, kemudian masuk ke writeln(kata, banyak) yang akan menuliskan Cetakan ke 3 di layar. Prosedur Tulis_1(3, ‘Cetakan ke ‘) selesai dijalankan dan kembali ke pemanggilnya yaitu Tulis_1(4, ‘Cetakan ke ‘)
  8. Tulis_1(4, ‘Cetakan ke ‘) sudah selesai menjalankan bagian if, kemudian masuk ke writeln(kata, banyak) yang akan menuliskan Cetakan ke 4 di layar. Prosedur Tulis_1(4, ‘Cetakan ke ‘) selesai dijalankan dan kembali ke pemanggilnya yaitu Tulis_1(5, ‘Cetakan ke ‘)
  9. Tulis_1(5, ‘Cetakan ke ‘) sudah selesai menjalankan bagian if, kemudian masuk ke writeln(kata, banyak) yang akan menuliskan Cetakan ke 5 di layar. Prosedur Tulis_1(5, ‘Cetakan ke ‘) selesai dijalankan.
  10. Prosedur sudah selesai dijalankan dan menghasilkan output seperti di atas.

Bandingkan prosedur dan outputnya di atas dengan prosedur di bawah ini.

PROCEDURE TULIS_2(banyak : integer; kata : string); 
begin 
  writeln(kata, banyak); 
  if banyak > 1 then 
    TULIS_1(banyak-1,kata); 
end;

OUTPUT (misal dipanggil dengan TULIS_2(5, ‘Cetakan ke ‘))

Cetakan ke 5 
Cetakan ke 4 
Cetakan ke 3 
Cetakan ke 2 
Cetakan ke 1

Materi Lengkap

Silakan baca juga beberapa artikel menarik kami tentang Rekursif, daftar lengkapnya adalah sebagai berikut.


Tonton juga video pilihan dari kami berikut ini

Bagikan ke teman-teman Anda

Contact Us

How to whitelist website on AdBlocker?

How to whitelist website on AdBlocker?

  1. 1 Click on the AdBlock Plus icon on the top right corner of your browser
  2. 2 Click on "Enabled on this site" from the AdBlock Plus option
  3. 3 Refresh the page and start browsing the site
error: Content is protected !!