{"id":114,"date":"2009-10-19T15:08:53","date_gmt":"2009-10-19T08:08:53","guid":{"rendered":"http:\/\/arif.unpad.ac.id\/?p=114"},"modified":"2009-10-19T15:08:53","modified_gmt":"2009-10-19T08:08:53","slug":"resiko-pemanfaatan-fungsi-rekursif","status":"publish","type":"post","link":"https:\/\/blogs.unpad.ac.id\/arif\/2009\/10\/19\/resiko-pemanfaatan-fungsi-rekursif\/","title":{"rendered":"Resiko Pemanfaatan fungsi Rekursif"},"content":{"rendered":"<p>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\u00a0 sebagai tanda bahwa fungsi tersebut jalan.<br \/>\n<!--more--><br \/>\nPemanggilan 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.<\/p>\n<p>Berikut ini adalah contoh program pemanggilan rekursif yang\u00a0 dapat mengakibatkan situs down, crash, hang, atau denial of service.<\/p>\n<p class=\"MsoNormal\" style=\"text-align: justify;margin: 0in 0in 10pt\"><span style=\"font-size: small\">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 \u201cOut of Memory\u201d . Program ini menggunakan dokumen HTML yang ditanami program javascript <span>\u00a0<\/span>sebagai program validasi inputnya.<\/span><\/p>\n<p class=\"MsoNormal\" style=\"text-align: justify;margin: 0in 0in 10pt\">\n&lt;html&gt;<br \/>\n&lt;head&gt;<br \/>\n&lt;title&gt; Test Crash program : Recursive Function Bug &lt;\/title&gt;<br \/>\n&lt;script language=&#8221;javascript&#8221;&gt;<br \/>\n&lt;!&#8211;<br \/>\nfunction foolrecursive(deep)<br \/>\n{<br \/>\nif(deep==1)<br \/>\n{<br \/>\nalert(&#8216;Anda masukan 1 huruf yang benar terima kasih&#8217;)<br \/>\n}<br \/>\nelse<br \/>\n{<br \/>\nmsg.innerHTML=msg.innerHTML +<br \/>\n&#8216;<br \/>\nAnda mengetikan lebih dari satu karakter, coba lagi&#8217;;<br \/>\n\/\/docu.refresh;<br \/>\nfoolrecursive(deep);<br \/>\n}<br \/>\nreturn;<br \/>\n}<br \/>\n\/\/&#8211;&gt;<br \/>\n&lt;\/script<br \/>\n&lt;\/head&gt;<br \/>\n&lt;body&gt;&lt;\/p&gt;<br \/>\n&lt;h1&gt;Test Crash &lt;\/h1&gt;<br \/>\n&lt;form name=&#8221;fm&#8221;&gt;<br \/>\nMasukan 1 huruf saja :&lt;br \/&gt;<br \/>\n&lt;input type=&#8221;text&#8221; name=&#8221;no&#8221; size=&#8221;1&#8243;&gt; &lt;input type=&#8221;button&#8221; onclick=&#8221;foolrecursive(fm.no.value.length);&#8221; value=&#8221;Test&#8221;&gt; &lt;br\/&gt;&lt;br \/&gt;<br \/>\n&lt;\/form&gt;<br \/>\n&lt;div id=&#8221;msg&#8221;&gt;yang diketikan tidak boleh lebih dari satu digit&lt;\/div&gt;<br \/>\n&lt;p&gt;&lt;\/body&gt;<br \/>\n&lt;\/html&gt;\u00a0<\/p>\n<p class=\"MsoNormal\" style=\"text-align: justify;margin: 0in 0in 10pt\">\u00a0<\/p>\n<p>\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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\u00a0 sebagai tanda [&hellip;]<\/p>\n","protected":false},"author":53,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,1],"tags":[],"class_list":["post-114","post","type-post","status-publish","format-standard","hentry","category-basic","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blogs.unpad.ac.id\/arif\/wp-json\/wp\/v2\/posts\/114","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.unpad.ac.id\/arif\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.unpad.ac.id\/arif\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.unpad.ac.id\/arif\/wp-json\/wp\/v2\/users\/53"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.unpad.ac.id\/arif\/wp-json\/wp\/v2\/comments?post=114"}],"version-history":[{"count":0,"href":"https:\/\/blogs.unpad.ac.id\/arif\/wp-json\/wp\/v2\/posts\/114\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.unpad.ac.id\/arif\/wp-json\/wp\/v2\/media?parent=114"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.unpad.ac.id\/arif\/wp-json\/wp\/v2\/categories?post=114"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.unpad.ac.id\/arif\/wp-json\/wp\/v2\/tags?post=114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}