Anda di halaman 1dari 10

FUNGSI REKURSIF

OLEH :

MADE YOGIPRANA DHARMA

NIM 19081013

PROGRAM STUDI D4 TEKNOLOGI ELEKTROMEDIK

UNIVERSITAS BALI INTERNASIONAL

DENPASAR

2020
KATA PENGANTAR

Puja dan puji syukur yang tidak terhingga dihaturkan ke hadapan Tuhan Yang Maha
Esa (Ida Sang Hyang Widhi Wasa) karena atas rahmat dan karunia-Nya tulisan yang berjudul
“Pemrograman Komputer” dapat diselesaikan sesuai harapan.
Tulisan ini disusun dalam rangka memenuhi salah satu syarat dalam menempuh salah
satu mata kuliah yang diampu I Made Agus Mahardiananta, ST., MT pada Semester Genap
tahun akademik 2019/2020.
Dengan mengerahkan segala pemikiran dan upaya yang ada, termasuk bantuan dan
bimbingan serta sumbang saran dari berbagai pihak, baik langsung maupun tidak langsung.
Untuk itu, terima kasih dan penghargaan yang setinggi-tingginya disampaikan kepada:
1. Bapak Suhartono, ST., MARS., Ketua Program Studi Teknologi Elektromedik yang telah
banyak membantu dan memotivasi penulis selama studi dan penyusunan karya tulis ini;
2. I Made Agus Mahardiananta,ST., MT pengampu mata kuliah Pemrograman Komputer
pada Semester Genap Tahun Akademik 2019/2020;
3. Rekan-rekan seangkatan pada Prodi Teknologi Elektromedik, Universitas Bali
Internasional yang banyak berkontribusi;
4. Semua pihak yang telah berkontribusi terhadap penyelesaian karya tulis ini.
Penulis menyadari karya tulis ilmiah ini masih jauh dari yang sempurna. Hal ini
disebabkan oleh keterbatasan penulis dalam pengetahuan, kemampuan menulis, mencari
sumber dan pengalaman. Oleh karena itu, segala kritik dan saran perbaikan sangat
diharapkan. Semoga tulisan ini dapat menambah pengetahuan dan bermanfaat bagi para
pembaca.

Denpasar, 08 Juni 2020


Penulis,
BAB I

PENDAHULUAN

1.1 Latar Belakang


Seiring dengan kebutuhan masyarakat yang di pengaruhi oleh perkembangan teknologi
yang begitu pesat terutama di bi!ang 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
Adapun rumusan masalah dalam karya tulis ini ialah sebagai berikut:
1. Apa yang dimaksud dengan Fungsi Rekursif ?
2. Apa saja aturan dalam Fungsi Rekursif ?
3. Apa saja kelebihan dan kekurangan dari Fungsi Rekursif ?
4. Bagaimana contoh Fungsi Rekursif ?

1.3 Tujuan Penulisan

Adapun tujuan yang ingin dalam karya tulis ini, ialah:

1. Agar penulis dapat mengetahui apa itu Fungsi Rekursif


2. Agar penulis dapat mengetahui aturan-aturan dalam Fungsi Rekursif
3. Agar penulis dapat mengetahui kelebihan dan kekurangan Fungsi Rekursif
4. Agar penulis dapat mengetahui contoh dari Fungsi Rekursif
BAB II

PEMBAHASAN

2.1 Pengetian Fungsi Rekursif

Rekursif berarti suatu proses yang memanggil dirinya sendiri. Dalam rekursif
sebenarnya terkandung pengertian prosedur atau fungsi. Perbedaannya adalah bahwa rekursif
bisa memanggil ke dirinya sendiri, tetapi prosedur atau fungsi harus dipanggil lewat
pemanggil prosedur atau fungsi. Rekursif merupakan teknik pemrograman yang penting, dan
beberapa bahasa pemrograman modern mendukung keberadaan proses rekursif ini.

Pemanggilan prosedur atau fungsi ke dirinya sendiri bisa berarti proses yang berulang
yang tidak bisa diketahui kapan akan berakhir. Dalam pemakaian sehari-hari, rekursi
merupakan teknik pemrograman yang berdaya guna untuk digunakan pada pekerjaan
pemrograman dengan mengeksperisikannya ke dalam suku-suku dari program lain dengan
menambahkan langkahlangkah sejenis. Contoh paling sederhana dari proses rekursi adalah
menghitung nilai faktorial dari bilangan bulat. Nilai faktorial, secara rekursif dapat ditulis
sebagai :

0! = 1

N! = N x (N-1)!, Untuk N > 0

yang secara notasi pemrograman bisa ditulis sebagai:

FAKTORIAL (0) = 1 1)

FAKTORIAL (N) = N * FAKTORIAL (N-1) 2)

Persamaan 2) di atas merupakan contoh hubungan rekurens (recurrence relation),


yang berarti bahwa nilai suatu fungsi dengan argumen tertentu bisa dihitung dari fungsi yang
sama dengan argumen yang lebih kecil. Persamaan 1) yang tidak bersifat rekursif, disebut
nilai awal. Setiap fungsi rekursi paling sedikit mempuyai 1 (satu) nilai awal; jika tidak, fungsi
tersebut tidak bisa dihitung secara eksplisit.

Proses rekursi akan selesai , ini terletak pada kondisi pernyataan if-nya. Jika
pernyataan if menjadi FALSE maka akan menghentikan proses rekursi
Prinsip dan proses rekursif:

1. Memiliki kasus non rekursi(sederhana).


2. Kasus awal diarahkan menuju kasus sederhana.
3. Mendefinisikan proses rekursif.

2.2 Aturan-aturan dalam Fungsi Rekursif

Aturan dalam rekursif yaitu :

 Memiliki base case.


 Membuat progress menuju ke base case.
 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 unut ketika memproses base case; ingat konstanta
tidak terlalu penting). T (N) = 2 T (N/2) + N. Dua buah pemanggilan rekursif, masing-masing
N/2. Waktu yang dibutuhkan untuk menyelesaikan masing-masing adalah T (N/2). Kasus
ketiga membutuhkan O (N).

2.3 Kelebihan dan Kekurangan Fungsi Rekursif

Kelebihan Fungsi Rekursif :

1. Sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian
melakukan perulangan dalam skala yang besar.
2. Dapat melakukan perulangan dengan batasan fungsi

Kekurangan Fungsi Rekursif :

1. Tidak bisa melakukan nested loop atau looping bersarang.


2. Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu
saja.
3. Memerlukan stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal
dan parameter formal akan ditempatkan ke stack dan ada kalaya akan menyebabkan
stack tak cukup lagi (Stack Overum).
4. Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan
pemanggilan data yang ditumpuk.

2.4 Contoh Fungsi Rekursif

1. Menghitung Nilai Faktorial Dengan Rekursif

#include <iostream>
using namespace std;

long int faktorial (int A);

int main(){

int r,hasil;

cout<<"MENGHITUNG NILAI FAKTORIAL DENGAN REKURSIF"<<endl;


cout<<endl;
cout<<"Masukan Nilai = ";
cin>>r;

hasil=faktorial(r);
cout<<"Faktorial "<<r<<"!= "<<hasil<<endl;
}

long int faktorial (int A){


if (A==1)
return(A);
else
return (A*faktorial(A-1));
}

Pada contoh yang pertama kita akan mencari nilai faktorial dari nilai yang dimasukan
oleh pengguna, Program diatas saya membuatnya lewat aplikasi Dev C++. Header yang saya
gunakan hanya iostream terkait input/ouput ada program, Karena jenis program yang saya
buat adalah program sekuensial maka saya perlu inisialisasi fungsi rekursifnya di awal
sebelum fungsi main(). Pada fungsi main pengguna akan memasukan nilai dan disimpan pada
variabel r nantinya akan dipanggil fungsi faktorial() dengan nilai parameter yang dibawah
adalah nilai r tersebut, lalu kemudian disimpan pada variabel hasil.

Coba perhatikan pada fungsi rekursif-nya:

long int faktorial (int A){


if (A==1)
return(A);
else
return (A*faktorial(A-1));
}
Disini kita membuat fungsi rekursif dimana jika nilai yang dimasukan adalah 1 maka
nilai balik (return value) adalah nilai itu sendiri. Sementara jika tidak maka akan dihitung
menggunakan rumus faktorial yaitu (A*faktorial(A-1)).

Hasil Output

2. Fungsi Rekursif Untuk Menghitung Pangkat

#include <iostream>
using namespace std;

long int pangkatrekursif(int x, int y);

int main(){

int x,y;

cout<<"FUNGSI REKURSIF UNTUK MENGHITUNG PANGKAT"<<endl;


cout<<endl;
cout<<"Masukan Nilai X = ";
cin>>x;

cout<<"Masukan Nilai Y = ";


cin>>y;
cout<<endl;
cout<<x<<" Dipangkatkan "<<y<<" = "<<pangkatrekursif(x,y)<<endl;
}

long int pangkatrekursif(int x, int y){


if (y==0)
return 1 ;
else
return x * pangkatrekursif(x,y-1);
}

Pada contoh fungsi rekursif c++ yang kedua adalah untuk menghitung pangkat.
Pengguna akan memasuka nilai x dan y lalu kemudian nilai x angkat dipangkatkan dengan
nilai y.
Jika kita lihat pada fungsi rekursif-nya:

long int pangkatrekursif(int x, int y){


if (y==0)
return 1 ;
else
return x * pangkatrekursif(x,y-1);
}

Disini kita membuat fungsi dengan nama pangkatrekursif dengan menggunakan 2


parameter yaitu nilai x dan y, jika nilai y yang dimasukan adalah 0 maka akan di set nilai
baliknya adalah 1, namun jika tidak maka fungsi tersebut di set nilai baliknya dimana nilai x
akan dikalikan nilai y-1.

Hasil Output:
BAB III

PENUTUP

3.1 Kesimpulan

Dari pembahasan di atas penulis dapat menyimpulkan bahwa, Rekursif berarti suatu
proses yang memanggil dirinya sendiri. Dalam rekursif sebenarnya terkandung pengertian
prosedur atau fungsi. Perbedaannya adalah bahwa rekursif bisa memanggil ke dirinya sendiri,
tetapi prosedur atau fungsi harus dipanggil lewat pemanggil prosedur atau fungsi. Rekursif
merupakan teknik pemrograman yang penting, dan beberapa bahasa pemrograman modern
mendukung keberadaan proses rekursif ini.

3.2 Saran

Dari pembahasan di atas penulis menyarankan sebaiknya Fungsi Rekursif dipahami


dengan baik agar memudahkan dalam proses mempelajari Bahasa mesin atau pemrograman
computer.
DAFTAR PUSTAKA

https://asepsumpena09.wordpress.com/2014/11/08/definisi-fungsi-rekursif-dan-contohnya/

http://onlyvista.blogspot.com/2017/07/pengertian-fungsi-rekursif-iteratif-dan.html

https://www.academia.edu/31869854/Fungsi_Rekursif

https://kelasprogrammer.com/contoh-fungsi-rekursif/

Anda mungkin juga menyukai