Pada matematika rekursif adalah sebuah fungsi yang didalamnya ada fungsi itu sendiri. Perhatikan contoh berikut ini :

f(0) = 3
f(n + 1) = 2f(n) + 1
Maka
f(0) = 3
f(1) = 2f(0) + 3 = 2 * 3 + 1 = 7
f(2) = 2f(1) + 3 = 2 * 7 + 1 = 15
f(3) = 2f(2) + 3 = 2 * 15 + 1 = 31
f(4) = 2f(3) + 3 = 2 * 31 + 1 = 73

Contoh di atas adalah fungsi yang didefinisikan secara rekursif. Rekursif dapat mendefinikan barisan, fungsi dan himpunan.

Langkah-langkah untuk mendefinisikan secara rekursif:

  1. Langkah basis: Tentukan anggota awalnya.
  2. Langkah rekursif: Bentuk aturan untuk membuat anggota baru dari anggota yang telah ada.

Dalam bahasa pemrograman, rekursif adalah proses dimana fungsi memangil dirinya sendiri.  Berikut ini beberapa contoh pemrograman rekursif dengan Java.

File: Pangkat.java

public class Pangkat{
	public static void main (String args[]){
		Pangkat p = new Pangkat();
		System.out.print("3 pangkat 6 =  ");
		System.out.print(p.HitungPangkat(3,6));
	}

	public int HitungPangkat(int x, int y){
		if(y==1){
			return x;
		}
		else {
			return x * HitungPangkat(x,y-1);
		}
	}
}

File : Factorial.java

public class Factorial{
	public static void main (String args[]){
		Factorial f = new Factorial();
		System.out.print("8! =  ");
		System.out.print(f.HitungFactorial(8));
	}

	public int HitungFactorial(int x){
		if(x==1){
			return 1;
		}
		else {
			return x * HitungFactorial(x-1);
		}
	}
}

File : Fibonacci.java

public class Fibonacci{
	public static void main (String args[]){
		Fibonacci f = new Fibonacci();
		System.out.println("Deret Fibonacci : ");
		for (int i=0;i<10; i++){
			System.out.print(f.HitungDeret(i)+" ");
		}
		System.out.print("...");
	}

	public int HitungDeret(int x){
		if(x==0){
			return x;
		}
		else if(x==1){
			return x;
		}
		else {
			return HitungDeret(x-1) + HitungDeret(x-2);
		}
	}
}

Terkadang lebih mudah menyelesaikan berbagai masalah dengan teknik rekursif, namun teknik ini memakan memori lebih besar daripada teknik looping for.

So, Happy Enjoying Code….🙂