01 Maret 2009

REKURSI

Yang dimaksud dengan rekursi adalah sebuah prosedur atau fungsi yang memanggil dirinya sendiri. Perhatikan contoh di bawah ini:

Function fakto(n:byte):longint
begin
if n=0 then fakto:=0
else
fakto:=n*fakto(n-1)
end;

begin
y:=fakto(5)
end.


Pada fungsi di atas, fungsi fakto dipanggil dengan parameter n-1, sehingga jika dipanggil fakto(5), penjelasannya adalah sebagai berikut:
Mula-mula FAKTO(5) dipanggil sehingga menyebabkan statemen n * FAKTO(n-1) dieksekusi, yang bemilai:
5 * FAKTO(4). FAKTO(4) akan mengeksekusi statemen:
4 * FAKTO(3). FAKTO(3) akan mengeksekusi statemen:
3 * FAKTO(2). FAKTO(2) akan mengeksekusi statemen:
2 * FAKTO(1). FAKTO(1) akan mengeksekusi statemen:
1 * FAKTO(0), FAKTO(0) sendiri bemilai 0, sehingga statemen:
1 * FAKTO(0) bemilai 0, yang berarti FAKTO(1) menghasilkan nilai 0 yang dikembalikan pada FAKTO(2),
2 * FAKTO(1) -> 2 * 0 = 0. Hasil 0 ini dikembalikan pada:
3 * FAKTO(2) -> 3 * 0 = 0. Hasil 0 ini dikembalikan pada:
4 * FAKTO(3) -> 4 * 0 = 0. Hasil 0 ini dikembalikan pada:
5 * FAKTO(4) -> 5 * 0 = 0.

sumber: http://www.geocities.com/tokiguide/

Tidak ada komentar: