Rekursif merupakan salah satu metode dalam dunia matematika dimana definisi sebuah fungsi mengandung fungsi itu sendiri. Dalam dunia pemrograman, rekursif diimplementasikan dalam sebuah fungsi yang memanggil dirinya sendiri dan tergolong dalam dynamic programming.

Contoh fungsi rekursif misalnya adalah fungsi pangkat, faktorial, barisan Fibonacci, dan masih banyak lagi lainnya. Mari kita lihat satu demi satu.

Dalam fungsi pangkat xy , kita tahu bahwa semua bilangan selain 0, jika dipangkatkan dengan 0 nilainya sama dengan 1. Jika x dipangkatkan dengan y, dengan y lebih dari 0, maka hasilnya sama dengan x dikalikan dengan x dipangkatkan y – 1. Jika dituliskan dalam notasi matematika definisinya adalah sebagai berikut:

x^y = 1, jika y = 0
x^y = x * x^(y-1), jika y > 0

Kita lihat di atas pada definisi y > 0, bentuk pemangkatan muncul kembali di sisi kanan. Itulah yang disebut rekursif. Definisi rekursif selalu dimulai dengan kasus penyetop, penghenti, atau kasus dasar dari suatu permasalahan, dalam hal ini terjadi ketika nilai y = 0. Definisi rekursif yang lebih kompleks mengandung inti dari permasalahan yang akan dipecahkan, namun lebih sederhana. Dalam hal ini yang tadinya x dipangkatkan dengan y, kini bentuk pemangkatan menjadi lebih sederhana, yaitu y – 1. Hal ini dimaksudkan untuk “menggiring” masalah kompleks ke kasus dasar atau penyetop rekursinya.

Untuk x = 10 dan y = 0, hasil dari xy adalah 1. Untuk x = 10 dan y = 3 hasilnya dapat digambarkan sebagai berikut:


Ide dasar dalam memecahkan suatu masalah dengan rekursif adalah sebagai berikut:
1. Menentukan kasus penyetop atau kasus dasar di mana pemanggilan rekursif tidak lagi diperlukan (karena solusinya sudah diperoleh)
2. Menerapkan suatu langkah untuk menggiring kasus kompleks ke kasus penyetopnya dengan metode yang mencerminkan fungsinya.

Berikut ini code untuk perpangkatan dalam bahasa pemrograman Java.

package Pangkat;
/**
*
* @author Sigit Widiyanto
*/

public class Main {
public static int PangkatRekursif(int x, int y) {
if (y == 0) {
return 1;
}
else {
return x * PangkatRekursif(x, y - 1);
}
}

public static void main(String[] args) {
System.out.println("10 ^ 3 = " + PangkatRekursif(10, 3));
}
}


These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Furl
  • Reddit
  • Spurl
  • StumbleUpon
  • Technorati