Anda di halaman 1dari 12

Tugas Kelompok Dosen Pembimbing

Struktur Data Yusra, ST, MT

Fungsi Rekursif

Disusun oleh :
Kelompok 1

Agitry Wahyu Nugraha


Albeneser
Jihad Benastey
Octri D Prayoga

Fakultas Sains dan Teknologi


Jurusan Teknik Informatika
Universitas Islam Negeri Sultan Syarif Kasim Riau
Pekanbaru
2016
KATA PENGANTAR

Puji syukur kehadirat Tuhan Yang Maha Kuasa atas segala limpahan
rahmat, Inayah, taufik dan hinayah-Nya sehingga penulis dapat menyelesaikan
penyusunan makalah ini dalam bentuk maupun isinya yang sangat sederhana.
Makalah ini dibuat dalam rangka memperdalam wawasan tentang rekursif
yang sangat diperlukan untuk menyelesaikan masalah sehingga dengan cepat
masalah dapat teratasi.
Penulis mengakui masih banyak kekurangan pada makalah ini. Oleh karena
itu diharapkan kepada pembaca untuk memberikan masukan-masukan yang bersifat
membangun untuk kesempurnaan makalah ini.

Pekanbaru, Oktober 2016

Penulis

i
DAFTAR ISI

KATA PENGANTAR ......................................................................................................... i

DAFTAR ISI....................................................................................................................... ii

BAB I PENDAHULUAN ................................................................................................... 1

1.1. Latar Belakang .................................................................................................... 1


1.2. Rumusan Masalah ............................................................................................... 1
1.3. Tujuan ................................................................................................................. 1
BAB II PEMBAHASAN .................................................................................................... 2

2.1. Definisi fungsi rekursif ....................................................................................... 2


2.2. Aturan dalam fungsi rekursif .............................................................................. 2
2.3. Contoh source code fungsi rekursif dan prosesnya............................................. 3
2.4. Kelebihan dan kekurangan fungsi rekursif ......................................................... 6
BAB III PENUTUP ............................................................................................................ 8

3.1. Simpulan ............................................................................................................. 8


DAFTAR PUSTAKA ......................................................................................................... 9

ii
BAB I
PENDAHULUAN
1.1. Latar Belakang
Seiring dengan kebutuhan masyarakat yang dipengaruhi oleh perkembangan
teknologi yang begitu pesat terutama di bidang komputer, hampir semua
pengolahan data maupun transaksi di berbagai perusahaan diproses menggunakan
komputer baik perusahaan swasta maupun instansi pemerintah. Penerapan sistem
operasi telah berubah dari sistem manual menjadi sistem komputerisasi, hal itu
cukup beralasan mengingat banyaknya kelebihan dari sistem komputerisasi antara
lain adalah proses pembelajaran struktur data yang membahas tentang Rekursif
dalam Algoritma.
Komputer adalah sistem elektronik untuk memanipulasi data yang cepat dan
tepat serta dirancang dan diorganisasikan supaya secara otomatis menerima dan
menyimpan data input memproses dan menghasilkan output di bawah pengawasan
instruksi-instruksi program yang tersimpan di memori.
1.2. Rumusan Masalah
1. Apa itu fungsi rekursif?
2. Apa saja aturan dalam fungsi rekursif?
3. Bagaimana contoh source code fungsi rekursif dan prosesnya?
4. Apa saja kelebihan dan kekurangan fungsi rekursif?
1.3. Tujuan
1. Mengetahui apa itu fungsi rekursif.
2. Mengetahui apa saja aturan dalam fungsi rekursif.
3. Mengetahui bagaimana contoh source code fungsi rekursif dan prosesnya.
4. Mengetahui apa saja kelebihan dan kekurangan fungsi rekursif.

1
BAB II
PEMBAHASAN
2.1. Definisi fungsi rekursif
Sebelum membahas tentang tentang fungsi rekursif, mari kita bahas sejenak
tentang fungsi iteratif. Iteratif adalah perulangan yang melakukan proses
perulangan terhadap sekelompok instruksi di mana perulangan tersebut akan
berhenti jika batasan syarat sudah tidak terpenuhi. Contoh fungsi iteratif antara lain
adalah perulangan for dan while yang sudah kita pelajari sebelumnya.
Fungsi rekursif adalah fungsi yang mengulang dirinya sendiri. fungsi ini
memanggil dirinya sendiri untuk melakukan proses berulang-ulang. Kasus
sederhana yang sering muncul adalah proses berulang-ulang menghitung hasil
faktorial. Misalnya adalah faktorial dari 4 adalah 1 x 2 x 3 x 4. Dari proses itu kita
ketahui bahwa untuk menghitung faktorial 4 manualnya seperti 1 x 2 = 2, lalu hasil
2 ini dikalikan 3 sehingga hasilnya adalah 6, lalu hasil 6 ini dikalikan lagi dengan 4
sehingga hasilnya adalah 24.
Nah inilah yang dinamakan rekursif, hasil dari proses awal digunakan lagi
untuk proses berikutnya sampai batas yang diinginkan.
Di dalam rekursif terdapat prosedur dan fungsi yang harus dipanggil lewat
pemanggilan prosedur atau fungsi itu sendiri.
Rekursif ini dipakai karena memiliki kelebihan yaitu penulisan baris program
dapat menjadi lebih singkat, tetapi memiliki kekurangan yaitu membutuhkan
banyak memori, karena setiap kali program bagian dipanggil oleh dirinya sendiri,
dibutuhkan sejumlah ruang memori tambahan.
Proses yang bersifat rekursif, terjadi apabila dalam sebuah fungsi ada instruksi
yang memanggil fungsi itu sendiri, atau lebih sering juga disebut memanggil
dirinya sendiri
2.2. Aturan dalam fungsi rekursif
Aturan dalam rekursif yaitu :
Memiliki base case
Membuat progress menuju ke base case

2
Asumsikan bahwa panggilan rekursif bekerja dengan baik.
Hindari menghitung sebuah penyelesaian dua kali.
Misalkan T( N ) adalah waktu untuk menyelesaikan masalah dengan ukuran
input N. Maka T( 1 ) = 1 (1 adalah quantum time unit ketika memproses base case;
ingat konstanta tidak terlalu penting. ). T( N ) = 2 T( N / 2 ) + N. Dua buah
pemanggilan rekursif, masing-masing berukuran N / 2. Waktu yang dibutuhkan
untuk menyelesaikan masing-masingnya adalah T( N / 2 ). Kasus ketiga
membutuhkan O( N ) .
T(1) = 1 = 1 * 1
T(2) = 2 * T(1) + 2 = 4 = 2 * 2
T(4) = 2 * T(2) + 4 = 12 = 4 * 3
T(8) = 2 * T(4) + 8 = 32 = 8 * 4
T(16) = 2 * T(8) + 16 = 80 = 16 * 5
T(32) = 2 * T(16) + 32 = 192 = 32 * 6
T(64) = 2 * T(32) + 64 = 448 = 64 * 7
T(N) = N(1 + log N) = N + N log N = O(N log N)
Jadi fungsi rekursif termasuk dalam Big-Oh O(N log N).
2.3. Contoh source code fungsi rekursif dan prosesnya
1. Fungsi rekursif faktorial

Berikut adalah source code dari fungsi rekursif faktorial:

public class faktorial {

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

System.out.print("masukkan angka: ");

int n = in.nextInt();

System.out.println(n+"!"+" = "+faktorial(n));

}public static int faktorial(int n){

if(n==1)return 1; //basis

3
else //jika basis belum terpenuhi

return (n*faktorial(n-1)); //lakukan rekursi pada


dirinya

Dapat dilihat pada kode diatas bahwa fungsi faktorial (n) akan memanggil
dirinya sendiri apabila belum mencapai basis rekursifnya.

Prosesnya :

faktorial(4) -> 4 * faktorial(3)

faktorial(3) -> 4 * [3 * faktorial(2)]

faktorial(2) -> 4 * 3 * [2 * faktorial(1)]

faktorial(1) -> 4 * 3 * 2 * [1]

faktorial(4) -> 24

Dari proses diatas dapat diketahui jika diinputkan n = 4 maka fungsi rekursif
faktorial(4) akan berjalan, di dalam proses fungsi faktorial(4) menjalankan hitungan
4 X faktorial(3). Faktorial(3) akan berjalan, di dalam proses fungsi faktorial(3)
menjalankan hitungan 4 X 3 X faktorial(2), begitu seterusnya sampai pada fungsi
faktorial(1) di mana proses akan berhenti dan hasilnya adalah 4 X 3 X 2 X 1 = 24.
Jadi faktorial dari 4 adalah 24.

Output program rekursif faktorial:

4
2. Fungsi rekursif fibonacci

Berikut adalah source code dari fungsi rekursif fibonacci:

public class Fibonacci {

public static int fibonacci(int x){

if (x<=0 || x<=1){

return x;

}else{

return fibonacci(x-2)+fibonacci(x-1);

}public static void main(String[]args){

Scanner in = new Scanner(System.in);

System.out.print("Masukkan batas deret fibonacci: ");

int n = in.nextInt();

for (int i=0;i<n;i++){

System.out.print(fibonacci(i)+" ");

Prosesnya:

fibonacci(0) -> 0

fibonacci(1) -> 1

fibonacci(2) -> fibonacci(2-2)+fibonacci(2-1) = 0 + 1

= 1

fibonacci(3) -> fibonacci(3-2)+fibonacci(3-1) = 1 + 1

= 2

5
fibonacci(4) -> fibonacci(4-2)+fibonacci(4-1) = 1 + 2

= 3

fibonacci(5) -> fibonacci(5-2)+fibonacci(5-1) = 2 + 3

= 5

fibonacci(6) -> fibonacci(6-2)+fibonacci(6-1) = 3 + 5

= 8

fibonacci(7) -> fibonacci(7-2)+fibonacci(7-1) = 5 + 8

= 13

fibonacci(8) -> fibonacci(8-2)+fibonacci(8-1) = 8 + 13

= 21

fibonacci(9) -> fibonacci(9-2)+fibonacci(9-1) = 13 + 21

= 34

Output program rekursif fibonacci:

2.4. Kelebihan dan kekurangan fungsi rekursif

1. Kelebihan
Sangat mudah untuk melakukan perulangan dengan batasan yang luas
dalam artian melakukan perulangan dalam skala yang besar
Dapat melakukan perulangan dengan batasan fungsi
2. Kekurangan
Tidak bisa melakukan nested loop atau looping bersarang.
Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk
persoalan tertentu saja

6
Memerlukan stack yang lebih besar, sebab setiap kali fungsi
dipanggil, variabel lokal dan parameter formal akan ditempatkan ke
stack dan ada kalanya akan menyebabkan stack tak cukup lagi (Stack
Overrun).
Proses agak berbelit-belit karena terdapat pemangilan fungsi yang
berulang-ulang dan pemanggilan data yang ditumpuk.
Memungkinkan terjadinya overflow pada stack (stack tak lagi mampu
menangani permintaan pemanggilan subrutin karena kehabisan
memori)

7
BAB III
PENUTUP
3.1. Simpulan
Fungsi rekursif merupakan salah satu konsep yang penting untuk dikuasai. Hal
ini dikarenakan fungsi ini memiliki sangat banyak implementasi, yang dalam hal
ini adalah implementasi dalam algoritma. Secara umum fungsi rekursif memiliki
algoritma yang lebih mudah dipahami dan dibuat tetapi membutuhkan penggunaan
memori yang besar.

8
DAFTAR PUSTAKA

Alex Xandra Albert. 2016. Rekursif. https://bertzzie.com/knowledge/analisis-


algoritma/Rekursif.html, 30 September 2016.

Georgius Rinaldo. 2014. Algoritma dan Struktur Data Rekursif.


http://www.slideshare.net/KuliahKita/algoritma-dan-struktur-data-rekursif, 30
September 2016.

Suryana Setiawan. 2009. Struktur Data & Algoritma Pengenalan Analisa


Algoritma. http://slideplayer.info/slide/2956985/, 30 September 2016.

Anda mungkin juga menyukai