Recursive Function

Recursive function, biasa kalo di bahasa Indonesia disebutnya fungsi rekursif, itu function yang di dalamnya ada perintah buat manggil function itu sendiri. Gunanya yang paling utama sih buat ngulang proses yang ada di dalam function itu juga. Pertanyaannya, ngapain kita pake fungsi rekursif kalo kita bisa pake looping for, while, atau do while buat ngulang perintah? Karena dalam beberapa kasus, fungsi iteratif (yang pake looping for, while, & do while tadi) lebih ribet daripada fungsi rekursif atau malah nggak bisa ngeberesin masalahnya sama sekali.

Pernah denger tentang faktorial? Faktorial itu perhitungan di matematika, biasanya sih dipake di perhitungan untuk peluang. Notasi matematika & penyelesaiannya kayak begini.

3! = 3 * 2 * 1 = 6

Faktorial ini salah satu contoh soal yang paling umum yang dipake buat ngajarin fungsi rekursif di kelas-kelas pemrograman sih. Contoh lainnya biasanya pake deretan Fibonacci, tapi di sini biar gampang gw pake contoh faktorial aja.

Ngomong-ngomong berhubung gw biasanya ngerjain ini pake bahasa C, gw nulis di sini pake bahasa C aja yak. Kalo kita mau bikin function untuk faktorial yang rekursif, kita bisa tulis kayak begini.

int factorial (int x)
{

if (x == 0 || x == 1)
return 1;

else
return x * factorial(x-1);

}

Jadi function di atas bakal ngembaliin nilai 1 kalau inputnya dikasih 0 atau 1, & bakal ngembaliin hasil faktorial dari inputnya kalo diinput lebih dari 1. Function ini pendek banget kalo dibikin rekursif. Kalo function ini mau dibikin jadi iteratif, kita bisa bikin functionnya jadi kayak begini.

int factorial (int x)
{
int result = x;

x--;

if (x == 1 || x == 0)
return 1;

while (x > 0)
{
result *= x;

x--;
}

return result;
}

Functionnya jadi lebih panjang waktu ditulis, & algoritmanya jadi sedikit lebih ribet. Tapi resource memory RAM yang dipake buat jalanin fungsi iteratif ini lebih hemat daripada yang dipake buat fungsi rekursif tadi. Untuk masalah kecepatan juga kayaknya sih yang iteratif ini masih lebih cepet dari yang rekursif. Tapi yang rekursif lebih cepet buat ditulis programnya & bisa nyelesaiin beberapa kasus yang nggak bisa diselesaiin pake fungsi iteratif. Jadi diliat-liat aja kapan harus pake fungsi iteratif & kapan harus pake fungsi rekursif.

Ngomong-ngomong sebelum bikin postingan ini gw ada bikin program buat ngitung faktorial pake fungsi rekursif. Functionnya gw tambahin sedikit perintah lagi sih, agak beda sama fungsi rekursif yang di atas tadi. Programnya bisa didownload di sini barengan sama source code programnya. Btw, kalo angkanya kegedean outputnya bakal salah. Ini masalah batas nilai di tipe data integer sih, tapi buat angka 1-10 lancar lah hasilnya.

5 thoughts on “Recursive Function

  1. Pemrograman memang tidak bisa lepas dari matematika, terutama logika, biner, CMIIW🙂
    Nyoba download programnya ya, aq belum pernah belajar bahasa C. Dulu cuma diajari VB, tu juga cuma bentar tok.

  2. Pingback: Deretan Fibonacci, Iteratif & Rekursif | Twisted Pair

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s