Apa itu Fungsi Rekursif?
Kita telah menyinggung tentang fungsi rekursif pada pembahasan konsep perulangan pada PHP.
Fungsi rekursif adalah metode perulangan yang terjadi akibat pengeksekusian suatu fungsi yang mana fungsi tersebut memanggil dirinya sendiri. Bisa jadi ia terus memanggil dirinya sendiri tanpa batas, atau mungkin dia akan berhenti jika kondisi tertentu terpenuhi.
Ilustrasinya adalah: seperti anda memiliki 2 buah cermin. Anda letakkan kedua cermin tersebut sedemikian rupa hingga saling berhadapan. Lalu anda coba berdiri di depannya, dan ya! Anda akan melihat pantulan diri anda tidak terbatas.
Ilustrasi yang lainnya adalah: PC anda sedang di-remote oleh PC lain. Lalu anda meremote PC yang sedang meremote PC anda, al-hasil anda akan melihat PC anda berkali-kali tanpa ujung.
Pendeklarasian Fungsi Rekursif
Tidak ada cara khusus dalam pendeklarasian fungsi rekursif. Ia hanyalah fungsi biasa. Sama saja apakah ia adalah fungsi yang mengembalikan sebuah nilai atau tidak.
Yang membedakan adalah: ia akan memanggil dirinya sendiri sehingga terjadilah suatu perulangan.
Contoh:
Jika kode program di atas dijalankan, ia akan menampilkan teks “Halo dunia!" sebanyak tak terbatas.
Dan ia tentu saja akan membuat komputer anda hank. Jadi, jangan coba-coba dilakukan, yaa!!
Perhatikan alur perjalanan program
Sekarang untuk menguji pemahaman, kita coba balik kode program pada fungsi tampilkanangka.
Jika kita melakukan proses rekursif setelah perintah echo, sekarang kita balik: kita lakukan proses rekursif terlebih dahulu, setelah itu kita lakukan perintah echo.
Seperti ini:
<?php
function tampilkanAngka (int $jumlah, int $indeks = 1) {
# panggil diri sendiri selama $indeks <= $jumlah
if ($indeks < $jumlah) {
tampilkanAngka($jumlah, $indeks + 1);
}
echo "Perulangan ke-{$indeks} <br>";
}
Coba panggil fungsi TampilkanAngka ( ) tersebut, lalu cek bagaimana output yang dihasilkan.
Kita mendapatkan output terbalik bukan?
Perulangan ke-20
Perulangan ke-19
Perulangan ke-18
Perulangan ke-17
...
Perulangan ke-4
Perulangan ke-3
Perulangan ke-2
Perulangan ke-1
Contoh Kasus Faktorial
Selanjutnya kita coba contoh kasus paling populer dalam penggunakan metode perulangan rekursif.
Kasus tersebut adalah kasus pemecahan faktorial. Dimana faktorial dari n sama dengan n * faktorial (n-1).
Misalkan faktorial dari angka 5, maka kita bisa sederhanakan caranya seperti ini:
faktorial(5) = 5 * faktorial(4)
faktorial(4) = 4 * faktorial(3)
faktorial(3) = 3 * faktorial(2)
faktorial(2) = 2 * faktorial(1)
faktorial(1) = 1
Hasil di atas sama dengan:
faktorial 5 = 5 * 4 * 3 * 2 * 1
# hasil = 120
Penyelesaian
Dengan rumus seperti di atas, kita bisa mulai memecahkannya dengan fungsi rekursif.
Kita mulai dulu fungsinya secara sederhana seperti berikut:
<?php
function faktorial ($n) {
echo "faktorial({$n}) = faktorial(" . ($n - 1) . ") <br>";
if ($n > 2) {
faktorial($n - 1);
}
}
# panggil
faktorial(5);
Ia akan menghasilkan output:
faktorial(5) = faktorial(4)
faktorial(4) = faktorial(3)
faktorial(3) = faktorial(2)
faktorial(2) = faktorial(1)
Setelah kita berhasil mendapatkan perulangan yang benar, kita ubah fungsi faktorial di atas dengan mengembalikan suatu nilai seperti berikut:
<?php
function faktorial ($n) {
if ($n > 2) {
return $n * faktorial($n - 1);
} else {
return $n;
}
}
# lalu panggil fungsi faktorial
$hasil = faktorial(5);
echo $hasil;
Jika anda menjalankan program di atas lalu output hasilnya adalah 120 , berarti program anda telah berjalan dengan benar.
Silakan ubah parameter $n untuk memeriksa apakah memang fungsi faktorial yang anda lakukan memang betul-betul berfungsi seperti yang diinginkan.
Pembahasan Selanjutnya
Naaaahh masih bingung yaa dengan penjelasan di atas, sebenarnya di atas adalah salah satu rumusan yang paling sederhana dan singkat untuk mempelajari rekursif. Mohon dipelajari lebih mendalam lagi.
Komentar
Posting Komentar