Belajar Web

Belajar Web: Fungsi Rekursi

Fungsi Rekursi

Posted by Gora Santika


Sumber Gambar : www.dominiek.eu

Halo, lama sekali kita tak jumpa. Maklum lah, ane emang manusia (sok) sibuk :P Pada kesempatan ini, saya ingin sedikit membahas mengenai rekursi.

Kalo menurut mbah wikipedia, "[1]Rekursi adalah proses pengulangan item dengan cara kesamaan-diri. [2]Rekursi adalah proses dimana salah satu langkah dalam prosedur menjalankan prosedur itu sendiri."

Kalo menurut ane, Rekursi adalah fungsi yang memanggil dirinya sendiri.

Rekan-rekan pembaca udah pada tau apa itu fungsi kan? Secara sederhana, fungsi adalah sekumpulan proses untuk memecahkan masalah. Sebagai contoh: f(x) = x + 3

Jika kita memanggil fungsi tadi, misal f(5) maka fungsi tersebut akan memberi hasil 8 yang diperolah dari 5 + 3. Coba ingat kembali pelajaran matematika SMP.

Contoh lain dari fungsi yang sudah mengandung unsur rekursi adalah fungsi faktorial. Faktorial, biasa dilambangkan tanda seru (!), adalah hasil kali bilangan asli berurutan.

Faktorial dapat dijabarkan: n! = n x (n-1) x (n-2) x ... x 1 Sehingga dapat diperoleh 5! = 5 x 4 x 3 x 2 x 1 = 120.

Notasi lain dari fungsi di atas bisa juga: f(n) = n x f(n-1) dengan f(1) = 1. Dari notasi di atas, dapat dilihat bahwa f(n) memanggil f(n-1) yang mana f(n-1) akan memanggil f((n-1)-1) = f(n-2) begitu seterusnya sampai ditemukan f(1) yang bernilai 1.

Jika kita aplikasikan dalam pemrogaman PHP, dapat ditulis menjadi:

function faktorial($n)
{
 if( ($n==1) || ($n==0) ){ return 1; }
 else{
  return $n * faktorial($n-1);
 }
}

Dalam potongan program di atas, statement if digunakan sebagai pembatas fungsi rekursi. Jika kita tidak menggunakan pembatas, maka fungsi akan memanggil dirinya sendiri sampai tak terhingga: faktorial(n-1) faktorial(n-2) faktorial(n-3) dst. Oleh sebab itu, jika fungsi telah memanggil batas yang di tentukan, ia akan mengembalikan nilai, dalam hal ini 1.

Jika pembatas fungsi tersebut adalah faktorial(1) yang bernilai 1, lalu mengapa dalam statement if ada nilai n==0 ? Perlu kita ingat lagi bahwa 0! = 1. Bagaimana bisa?

Simak perhitungan berikut:

1! = 1
2! = 2 x 1! = 2
3! = 3 x 2! = 6
4! = 4 x 3! = 24
5! = 5 x 4! = 120

coba kita balik perhitungan tersebut:

5! = 120
4! = 5! / 5 = 24
3! = 4! / 4 = 6
2! = 3! / 3 = 2
1! = 2! / 2 = 1

0! = 1! / 1 = 1

Jadi ketika kita memanggil faktorial(0), fungsi akan memberi hasil 1. Lalu bagaimana dengan faktorial(-1) ? Perlu diingat bahwa faktorial hanya untuk bilangan asli.

Intinya, suatu fungsi disebut rekursi apabila fungsi tersebut memanggil dirinya sendiri dalam pemecahan masalahnya.

Demikian kurang lebih apa yang dapat saya sampaikan mengenai rekursi. Kurang dan lebihnya, saya mohon maaf.



[Semoga Bermanfaat]

Leave a Reply