Tentang Recursive Function
December 11th, 2008 | by rosihanari |
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
- Function Menghitung Pangkat Bilangan dengan Pascal
- Apa Sih Gunanya Function??
- Tentang Function str_replace()
- Ide Membuat Program Konversi Bilangan Biner ke Desimal
- Beberapa Function Pengolah String di PHP (Bag. 1)
- Teknik Debugging Dalam Membuat Program
- Penggunaan Function ereg() di PHP untuk Pattern Matching
- Beberapa Mitos dan Fakta tentang Pemrograman
- Beberapa Function Sorting di PHP
- Tentang DOM di Javascript
Share this article on:
Kata kunci: function - recursive -
Pertama di Indonesia: "Murottal Al Qur'an + Terjemahan" dalam bentuk CD MP3 Original (
Rosihan Ari adalah seorang programmer, penulis buku, trainer, peneliti dan berusaha menjadi seorang blogger sejati dengan memberikan yang terbaik buat negeri ini. Berfokus pada computer programming serta computer aided learning for mathematics, ia ingin berbagi ilmu yang dimilikinya. 

