
Rekursif adalah proses memanggil/menjalankan dirinya sendiri yang dilakukan
oleh fungsi atau prosedur. Perlu diketahui bahwa cara kerja rekursif mirip
seperti perulangan tanpa henti (infinite loop), oleh karena itu untuk
menghentikan/mengakhiri rekursif diperlukan suatu kondisi agar rekursif dapat
berhenti.
Rekursif merupakan algoritma lanjutan yang dibuat dengan menggabungkan
beberapa algoritma. Dalam membuat rekursif setidaknya diperlukan dua algoritma
sebagai komponen utamanya, yaitu fungsi atau prosedur dan pengkondisian (if)
sebagai penghenti rekursif.
Berikut adalah contoh Rekursif beserta penulisannya dalam bahasa algoritmik
dan beberapa bahasa pemograman :
1. Bahasa Algoritmik
{ Blok fungsi untuk rekursif }
function faktorial(angka : integer) -> integer
{ Kondisi berhenti }
if ((angka = 0) or (angka = 1)) then
{ Mengembalikan nilai faktorial }
-> 1
else
{ Rekursif }
-> angka * faktorial(angka-1)
{ Blok utama }
{ Deklarasi variabel blok utama }
angka : integer
{ Memberi masukan ke dalam variabel angka }
input(angka)
{ Menampilkan hasil rekursif }
output(faktorial(angka))
2. Bahasa Pascal
program faktorialAngka;
{ Blok fungsi untuk rekursif }
function faktorial(angka : integer) : integer;
begin
{ Kondisi berhenti }
if ((angka = 0) or (angka = 1)) then
begin
{ Mengembalikan nilai faktorial }
faktorial := 1;
end
else
begin
{ Rekursif }
faktorial := angka * faktorial(angka-1);
end;
end;
{ Blok Utama }
{ Deklarasi variabel blok utama }
var
angka : integer;
begin
writeln('Faktorial Angka');
{ Memberi masukan ke dalam variabel angka }
write('Input nilai angka = ');
readln(angka);
{ Menampilkan hasil rekursif }
write('Faktorial dari angka ', angka, ' = ');
writeln(faktorial(angka));
end.
3. Bahasa C++
#include <iostream>
using namespace std;
// Blok fungsi untuk rekursif
int faktorial(int angka)
{
// Kondisi berhenti
if ((angka == 0) || (angka == 1))
{
// Mengembalikan nilai faktorial
return 1;
} else
{
// Rekursif
return (angka * faktorial(angka-1));
}
}
// Blok utama
int main()
{
cout << "Faktorial Angka\n";
// Deklarasi variabel blok utama
int angka;
// Memberi masukan ke dalam variabel angka
cout << "Input nilai angka = ";
cin >> angka;
// Menampilkan hasil rekursif
cout << "Faktorial dari angka " << angka << " = ";
cout << faktorial(angka) << endl;
// Mengembalikan nilai
return 0;
}
4. Bahasa Java
import java.util.Scanner;
public class Main
{
// Blok method pengganti fungsi untuk rekursif
public static int faktorial(int angka)
{
// Kondisi berhenti
if ((angka == 0) || (angka == 1))
{
// Mengembalikan nilai faktorial
return 1;
} else
{
// Rekursif
return (angka * faktorial(angka-1));
}
}
// Blok utama
public static void main(String[]args)
{
System.out.println("Faktorial Angka");
// Deklarasi variabel blok utama
int angka;
Scanner masukan = new Scanner(System.in);
try
{
// Memberi masukan ke dalam variabel angka;
System.out.print("Input nilai angka = ");
angka = masukan.nextInt();
// Menampilkan hasil rekursif
System.out.print("Faktorial dari angka " + angka + " = ");
System.out.println(faktorial(angka));
} catch(Exception e)
{
System.out.println("Harap masukan nilai berupa angka!");
}
}
}