Beli Modem Wavecom Untuk SMS Gateway. FREE E-book Gammu + FREE Ongkos kirim !!
Ingin Punya Script SMS Gateway dengan PHP + MySQL?

Dapatkan segera phpSMS V3.0, software SMS Gateway multi fungsi berbasis web buatan saya sendiri untuk keperluan Anda.
[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… :-)

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)

Anda ingin mendownload beberapa tool programming 100% gratis?
Silakan download di FREE PROGRAMMING TOOLS.
atau ingin berdonasi untuk pengembangan blog ini cukup dengan $1 via Paypal?



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.

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word