You are on page 1of 4

MODUL VII

REKURSIF

Tugas Pendahuluan
1. Jelaskan pemahaman anda tentang rekursif!
2. Buatlah contoh algoritma pemrograman rekursif!
3. Buatlah contoh rekursif dalam Bahasa java!

Tujuan

1. Mahasiswa mampu memahami tentang algoritma RekuRsif.


2. Mahasiswa mampu mengimplementasikan dalam pemprograman java.

TEORI

A. REKURSIF
Fungsi rekursif adalah suatu fungsi yang memanggil dirinya sendiri. Pada beberapa
persoalan, fungsi rekursif sangat berguna karena mempermudah solusi. Namun
demikian, fungsi rekursif juga memiliki kelemahan, yakni memungkinkan terjadinya
overflow pada stack, yang berarti stack tidak lagi mampu menangani permintaan
pemanggilan fungsi karena kehabisan memori( stack adalah area memori yang dipakai
untuk variable lokal untuk mengalokasikan memori ketika suatu fungsi dipanggil.
Oleh karena itu, jika bisa diselesaikan dengan metode iteratif, gunakanlah metode
iteratif.
Bentuk umum fungsi rekursif.

return_data_type function_name(parameter_list)
{
...
function_name(...);
... }

Contoh program

Contoh #1: Faktorial

Fungsi rekursif dapat digunakan untuk menghitung faktorial. Berikut penjelasan


beserta dengan contoh listing programnya.

Fungsi faktorial dapat dinyatakan dalam bentuk rekursif seperti berikut:

fak(n) = 1, untuk n = 0 atau n = 1

fak(n) = n x (n-1)!, untuk n > 0

PENDIDIKAN INFORMATIKA | Praktikum Algoritma & Pemprograman 1


Berikut contoh proses untuk perolehan hasil 4!.

Hasil akhir: 24
faktorial(4)

4 * faktorial(3)

3 * faktorial(2)

2 * faktorial(1)

faktorial(1)

1. PELAKSAAN PRAKTIKUM

Ketikan kode program berikut :

public class Rekursif {

public static void main(String[] args) {


System.out.println("Faktorial ");
int x=4;
System.out.println(x+"!");
System.out.println("hasil : "+faktorial(x));
}

static int faktorial(int x){


if(x==0){
return 1;
}else{
return x*faktorial(x-1);
}
}
}

PENDIDIKAN INFORMATIKA | Praktikum Algoritma & Pemprograman 2


2. LATIHAN
class faktorial{
int fak_rekursif(int n){
int Hasil;

if(n==1 || n==0) return 1;

Hasil = fak_rekursif(n-1) * n;

return Hasil;
}

int fak_perulangan(int n){


int t;
int Hasil;

Hasil = 1;

for(t=1; t<=n; t++)


Hasil *= t;

return Hasil;
}
}

class faktorialDemo{
public static void main(String args[]){
faktorial fak = new faktorial();

System.out.println("Hitungorial dengan Rekursif");


System.out.println("Faktorial 4 adalah : "+ fak.fak_rekursif(4));

System.out.println("Hitungorial dengan Perulangan");


System.out.println("Faktorial 4 adalah : "+ fak.fak_perulangan(4));
}
}

Kode diatas saya selipkan juga factorial dengan menggunakan perulangan. Pada
proses factorial dengan perulangan, awalnya adalah hasil factorial bernilai 1 dan
terus bertambah dengan perkalian tiap kenaikan t dari perulangan.

Berbeda dengan factorial dengan menggunakan metoda rekursif. Code yang


menunjukan bahwa proses rekursif adalah :
Hasil = fak_rekursif(n-1) * n;
Nilai dari variable Hasil ini didapat dari pemanggilan terlebih dahulu fungsi
fak_rekursif dengan parameter mundur. Jadi secara tidak langsung, code ini
menghitung terlebih dahulu factorial dari yang kecil. Misalnya adalah factorial 5,
maka code tadi itu menghitung.
Hasil = fak_rekursif(1-1) * 1; , memanggil fungsi fak_rekursif(0)
Hasil = fak_rekursif(2-1) * 2; , memanggil fungsi fak_rekursif(1)

PENDIDIKAN INFORMATIKA | Praktikum Algoritma & Pemprograman 3


Hasil = fak_rekursif(3-1) * 3; , memanggil fungsi fak_rekursif(2)
Hasil = fak_rekursif(4-1) * 4; , memanggil fungsi fak_rekursif(3)
Hasil = fak_rekursif(5-1) * 5; , memanggil fungsi fak_rekursif(4)

Karena proses awalnya adalah fak_rekursif(5-1)*5; , maka otomatis fungsi itu


memanggil fungsi fak_rekursif (4), di dalam fungsi fak_rekursif(4), ada proses
pemanggilan fungsi fak_rekursif(4-1)*4, yaitu fungsi fak_rekursif(3). Dan
seterusnya.

3. TUGAS

1. Buatlah program deret angka 3,6,9,12,15,18 dengan konsep rekursif!


2. Buatlah program deret angka 0,1,1,2,3,5,8,13,21,34 dengan kosnep rekursif!

PENDIDIKAN INFORMATIKA | Praktikum Algoritma & Pemprograman 4

You might also like