Rekursif tak hingga sama dengan iterasi yang mungkin akan terjadi tak hingga bila kondisi pada while atau until tidak pernah terpenuhi, rekursi tak hingga juga dapat terjadi apabila jalannya pemanggilan sub program tidak pernah mencapai true pada kondisi if. Sebagai contoh, Apa yang terjadi bila dipanggil fungsi sum(0) pada kedua fungsi di bawah ini?
function sum(x : integer) : integer;
var i, result : integer;
begin
result := 0;
for i := 1 to x do result := result + i;
sum := result;
end;
Untuk fungsi versi iterasi maka sum(0) hasilnya akan bernilai 0 (benar).
function sum(x : integer) : integer;
begin
if x = 1 then sum := 1
else sum := x + sum(x - 1);
end;
Untuk fungsi rekursif sum(0) maka gambaran jalannya program seperti berikut:
- sum(0) akan menjadi 0 + sum(-1)
- sum(-1) akan menjadi 0 + sum(-2)
- sum(-2) akan menjadi 0 + sum(-3)
- sum(-3) akan menjadi 0 + sum(-4)
- sum(-4) akan menjadi 0 + sum(-5)
- sum(-5) akan menjadi 0 + sum(-6)
- sum(-6) akan menjadi 0 + sum(-7)
- sum(-7) akan menjadi 0 + sum(-8)
- …
- …
Sampai kapan rekursif tersebut akan dijalankan? Jawabannya adalah selama-lamanya. Rekursi tak hingga akan terjadi jika kondisi pada if (disebut juga sebagai base casse atau special case) yang tidak pernah terpenuhi.
Materi Lengkap
Silakan baca juga beberapa artikel menarik kami tentang Rekursif, daftar lengkapnya adalah sebagai berikut.