Pertama di Indonesia: "Murottal Al Qur'an + Terjemahan" dalam bentuk CD MP3 Original (Coba dulu FREE)

Pasang banner (468x60) di sini


Dapatkan Script SMS Gateway PHP + MySQL

Seperti: software pengirim SMS massal, SMS survei, SMS polling, SMS quick count, SMS dakwah, Web2SMS dan masih banyak lagi... semuanya berbasis PHP & MySQL
[Info Lengkap...]


Tentang Recursive Function


December 11th, 2008 | by rosihanari | Cetak Artikel Ini Cetak Artikel Ini

Pada artikel sebelumnya, telah saya paparkan mengenai apa itu function serta apa manfaat dan perannya dalam sebuah program. Nah… sedangkan dalam artikel ini akan saya jelaskan mengenai recursive function, atau function yang memanggil dirinya sendiri.. Function yang memanggil dirinya sendiri? aneh bener nih function? apaan tuh maksudnya? Pengin tahu lebih dalam tentang recursive function? Oleh karena itu simak baik-baik artikel ini.

OK… untuk mempermudah pembahasan, saya akan ambil beberapa contoh kasus. Kasus yang pertama adalah tentang menghitung pangkat ab, dengan a bilangan riil dan b bilangan bulat non negatif. Contoh ini sebenarnya telah dibahas pada artikel tentang function sebelumnya. Di sini saya tidak akan mengulangi lagi pembahasan yang sama, namun akan saya berikan perspektif lain dalam menghitung pangkat tersebut.

Nah… kita semua tentu tahu bahwa ab = a . ab-1. Betul kan? Artinya apa? artinya adalah ketika kita akan menghitung sebuah pangkat, ternyata kita dapat menyatakan perhitungannya dalam bentuk pangkat lagi, dalam hal ini kita akan menghitung ab-1 untuk menghitung ab. Apabila untuk menghitung pangkat ini kita bentuk suatu function, maka dalam function tersebut akan memanggil function pangkat itu sendiri.

Sehingga kira-kira bentuk function pangkat untuk menghitung ab akan berbentuk sbb:

function pangkat(a : real; b : integer) : real;
begin
     pangkat := a * pangkat(a, b-1);
end;

Tapi… eit… tunggu dulu, sudah betulkah bentuk function di atas? Coba kita cek. Misalkan a = 3 dan b =4, maka

pangkat(3, 4) = 3.pangkat(3, 3) = 3.3.pangkat(3, 2) = 3.3.3.pangkat(3, 1) = 3.3.3.3.pangkat(3, 0) = 3.3.3.3.3.pangkat(3, -1) = …

Lho kok terus jalan? emangnya tidak berhenti?? ya jelas tidak berhenti dong, karena pangkatnya terus dikurangi 1. Oleh karena itu kita harus memikirkan bagaimana caranya berhenti. Kapan berhentinya? tentu saja apabila b = 0. Sehingga function di atas harus dimodifikasi menjadi

function pangkat(a : real; b : integer) : real;
begin
     if b = 0 then pangkat := 1
     else pangkat := a * pangkat(a, b-1);
end;

Sehingga proses perhitungan untuk a = 3 dan b = 4 adalah

pangkat(3, 4) = 3.pangkat(3, 3) = 3.3.pangkat(3, 2) = 3.3.3.pangkat(3, 1) = 3.3.3.3.pangkat(3, 0) = 3.3.3.3.1 = 81.

Contoh kedua adalah tentang mencari nilai n faktorial atau n!, dengan n bilangan bulat non negatif. Kita biasa menghitung n! dengan rumus n! = n.(n-1).(n-2)….1. Nah… kita coba perspektif lain untuk menghitung faktorial ini dengan recursive, yaitu n! = n . (n-1)!

Sekarang kita coba implementasikan cara recursive di atas pada function untuk mencari faktorialnya.

function faktorial(n : integer) : real;
begin
     if n = 1 then faktorial := 1
     else faktorial := n * faktorial(n-1);
end;

Sehingga kita ambil contoh n = 4, maka n! = 4.3! = 4.3.2! = 4.3.2.1! = 4.3.2.1 = 24.

OK… that’s all… mudah-mudahan artikel ini dapat bermanfaat buat Anda. Selamat berrecursive ria, he..he..he… :-)


Beberapa artikel terkait


Share this article on:

Kata kunci: function - recursive -




Tolong beri komentar donk!

Komentar Anda akan berguna untuk kemajuan blog ini.


Mohon maaf, komentar yang menggunakan email palsu atau komentar bernada negatif atau cemooh secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil dalam daftar komentar.

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

*
Untuk membuktikan bahwa komentar Anda bukan spam, tulis kata yang muncul dalam gambar di bawah ini. Bila Anda tidak bisa membaca kata dalam gambar, klik pada gambar tersebut untuk mendengarkan suara dari kata tersebut
Click to hear an audio file of the anti-spam word