PROSEDUR dan FUNGSI REKURSIF |
Link/anchor: PROSEDUR dan FUNGSI REKURSIF Prosedur
dan fungsi merupakan sub program yang sangat bermanfaat dalam
pemrograman, terutama untuk program atau proyek yang besar. Manfaat
penggunaan sub program antara lain adalah : Prosedur dan fungsi merupakan sub program yang sangat bermanfaat dalam pemrograman, terutama untuk program atau proyek yang besar. Manfaat penggunaan sub program antara lain adalah :
Sub Program Rekursif adalah sub program yang memanggil dirinya sendiri selama kondisi pemanggilan dipenuhi. adalah Dengan melihat sifat sub program rekursif di atas maka sub program rekursif harus memiliki :
if kondisi khusus tak dipenuhi Sub
program rekursif umumnya dipakai untuk permasalahan yang memiliki
langkah penyelesaian yang terpola atau langkah-langkah yang teratur.
Bila kita memiliki suatu permasalahan dan kita mengetahui algoritma
penyelesaiannya, kadang-kadang sub program rekursif menjadi pilihan
kita bila memang memungkinkan untuk dipergunakan. Secara algoritmis
(dari segi algoritma, yaitu bila kita mempertimbangkan penggunaan
memori, waktu eksekusi sub program) sub program rekursif sering
bersifat tidak efisien . Dengan demikian sub program rekursif umumnya memiliki efisiensi dalam penulisan perintah, tetapi kadang tidak efisien secara algoritmis. Meskipun demikian banyak pula permasalahan-permasalahan yang lebih sesuai diselesaikan dengan cara rekursif (misalnya dalam pencarian / searching, yang akan dibahas pada pertemuan-pertemuan yang akan datang). Contoh sub program rekursif dalam bahasa Pascal.
PROCEDURE TULIS_1(banyak : integer;kata : string); begin if banyak > 1 then TULIS_1(banyak-1,kata); writeln(kata, banyak:5); end; OUTPUT (misal dipanggil dengan TULIS_1(5,"Cetakan ke ")) Cetakan ke 1 Cetakan ke 2 Cetakan ke 3 Cetakan ke 4 Cetakan ke 5 Bandingkan prosedur dan outputnya di atas dengan prosedur di bawah ini! PROCEDURE TULIS_2(banyak : integer;kata : string); begin writeln(kata, banyak:5); 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 Mengapa hasilnya jauh berbeda? Kembali ke atas
var i : integer; begin hasil := 0; for i:= 1 to b do hasil := hasil + a; end;
var hasil : longint; i: integer; begin hasil := 0; for i:= 1 to b do hasil := hasil + a; KALI_BIASA_F := hasil;
Kembali ke atas Dengan Rekursif
begin if b>1 then KALI_REK_P(a,b-1,hasil); hasil:= hasil+a; end; Function KALI_REK_F(a,b:integer):longint; begin if b>1 then KALI_REK_F := KALI_REK_F(a,b-1)+a else KALI_REK_F := a; end; Kembali ke atas TUGAS :
|