Resiko Pemanfaatan fungsi Rekursif

Ada beberapa hal yang patut diperhatikan bagi seorang programmer ketika membuat program aplikasi yang memanfaatkan fungsi rekursif (recursive function). Recursive function merupakan sebuah fungsi yang dibuat dimana dalam isi fungsi tersebut terdapat pemanggilan fungsi itu sendiri. Pemanfaatan fungsi recursive ini wajib memiliki fungsi yang dapat menghentikan dari proses pengulangan pemanggilan fungsi itu sendiri  sebagai tanda bahwa fungsi tersebut jalan.

Pemanggilan recursive function akan menjadi sebuah bug yang tidak terampuni, jika variable yang di gunakan sebagai kondisi yang menghentikan recursive tersebut berisi kondisi yang harus melakukan proses pemanggilan fungsi tersebut secara berulang-ulang tanpa henti. Untuk kondisi tertentu proses ini bisa mengakibatkan sebuah program menghabiskan memory dan mungkin kinerja prosessor itu sendiri. Jika fungsi tersebut terpasang dalam program service, bisa jadi sebuah komputer harus mematikan program secara paksa melalui task manager (jika di windows) atau mungkin harus dilakukan restart.

Berikut ini adalah contoh program pemanggilan rekursif yang  dapat mengakibatkan situs down, crash, hang, atau denial of service.

Program dalam bentuk halaman html ini merupakan program yang digunakan untuk memvalidasi inputan yang akan dimasukan apakah sesuai criteria atau tidak. Kriteria input yang disyaratkan hanya 1 (satu) digit. Jika user mengetik satu digit makan akan muncul tampilan pesan bahwa data yang diinput adalah benar. Jika user mengetikan input lebih dari satu digit, siprogram berusaha terus menerus mengeluarkan pesan bahwa data yang diinput lebih dari satu digit, namun karena user tidak diberi kesempatan untuk menginput ulang, akibatnya fungsi terus melakukan penulisan pesan secara berulang-ulang pada halaman web hingga akhirnya program tersebut hang (not responding) dan jika melebihi batas kapasitas browser akan muncul pesan kesalahan “Out of Memory” . Program ini menggunakan dokumen HTML yang ditanami program javascript  sebagai program validasi inputnya.

<html>
<head>
<title> Test Crash program : Recursive Function Bug </title>
<script language=”javascript”>
<!–
function foolrecursive(deep)
{
if(deep==1)
{
alert(‘Anda masukan 1 huruf yang benar terima kasih’)
}
else
{
msg.innerHTML=msg.innerHTML +

Anda mengetikan lebih dari satu karakter, coba lagi’;
//docu.refresh;
foolrecursive(deep);
}
return;
}
//–>
</script
</head>
<body></p>
<h1>Test Crash </h1>
<form name=”fm”>
Masukan 1 huruf saja :<br />
<input type=”text” name=”no” size=”1″> <input type=”button” onclick=”foolrecursive(fm.no.value.length);” value=”Test”> <br/><br />
</form>
<div id=”msg”>yang diketikan tidak boleh lebih dari satu digit</div>
<p></body>
</html>