Anda di halaman 1dari 16

1

Rekursif
Algoritma & Struktur Data
Rekursif
Ade Imannurohma (2210191002)

<= Kelompok 6
Rahmadillah Maulana (2210191005)
Laurensius Yuda Wicaksono (2210191025)
Zaikhul Sulthon Suasono (2210191027)
Introduction
Dalam Bahasa pemrograman istilah rekursif merupakan implementasi dari
sebuah fungsi yang dapat memanggil dirinya sendiri dan jika dalam matematis
rekursif merupakan suatu metode atau definisi dari sebuah fungsi yang
mengandung fungsi itu sendiri
Karakteristik
Teknik rekursif sendiri adalah bentuk implementasi dari algoritma dengan tipe divide and conquer. Sebuah algoritma dengan
tipe ini memiliki 3 tahapan umum yakni:

Divide, Conquer, Combine,


memecahkan persoalan
membagi/memecah menggabungkan
yang sudah diperkecil
persoalan secara terus pemecahan/solusi dari
hingga mencapai ukuran
menerus ke dalam
bentuk yang lebih
dimana ia dapat dapat seluruh persoalan kecil
dipecahkan sendiri (base hingga menjadi solusi
kecil.
scenario) untuk persoalan awal
Contoh rekursif yang sederhana yakni memotong roti
tawar tipis-tipis sampai habis. Jika masalah ini akan
dipecahkan secara rekursif, maka solusinya adalah:
1. Jika roti sudah habis atau potongan terakhirnya
sudah paling tipis, pemotongan roti selesai
2. Jika roti masih bisa dipotong, potong2 dari tepi
roti tersebut, lalu lakukan prosedur 1 dan 2 untuk
sisa potongannya
Jika pada Algoritma, Contoh paling sederhana dari proses rekursif ini adalah proses
menghitung nilai factorial dari suatu bilangan bulat positif dan mencari deret Fibbonacci
dari suatu bilangan bulat,

Nilai factorial secara rekursif dapat ditulis sebagai


0 != 1
N != Nx (N – 1)!
Jika, didalam pemrograman proses pembentukan factorial ditulislan sebagai
Faktorial(0) = 1
Faktorial(N) = N *Faktorial(N-1)
Jika pada Algoritma, Contoh paling sederhana dari proses rekursif ini adalah proses
menghitung nilai factorial dari suatu bilangan bulat positif dan mencari deret Fibbonacci
dari suatu bilangan bulat,

Bilangan Fibbonacci à 1 1 2 3 5 8 13 21 34 55 89 ...


dari barisan tersebut dapat dilihat bahwa bilangan ke-N (N>2) dalam barisan dapat dicari dari
dua bilangan sebelumnya yang terdekat dengan bilangan N, yaitu bilangan ke-(N-1) dan
bilangan ke-(N-2), sehingga dapat dirumuskan sebagai
Fibbonacci(1) = 1 (1)
Fibbonacci(2) = 1 (2)
Fibbonacci(N) = Fibbonacci(N-1) + Fibbonacci(N-2) (3)
Dengan persamaan (1) dan (2) adalah basis dan persamaan (3) adalah rekurensnya
Sub Program Rekursif
Sub program Rekursif adalah sub program yang memanggil dirinya sendiri selama kondisi pemanggil terpenuhi. Sub
program rekursif harus memiliki Kodisi yang menyebabkan pemanggilan dirinya berhenti (kondisi khusus atau special
condition) dan Pemanggilan dari sub program (yaitu kondisi khusus tidak terpenuhi).

Secara umum bentuk dari sub program rekursif memiliki statement kondisional:

Else
If Then (lakukan intruksi
(panggil diri sendiri
(kondisi yang akan
dengan parameter dieksekusi bila
khusus tak yang sesuai) kondisi khusus
dipenuhi) terpenuhi)
IMPLEMENTASI LANGSUNG
Berikut ini merupakan source code yang merupakan implementasi
dari rekursif yang ditulis dengan bahasa C++
Faktorial
RUN

Pada bagian header yang ada pada program kita


menggunakan <iostream> terkait
input/outputnya nanti. Untuk inisialisasi fungsi
rekursifnya kami gunakan int factorial(int x)
dimana jika nilai yang dimasukkan adalah 1
Place your screenshot here
maka nilai balik(return value) merupakan nilai
itu sendiri. Sementara jika tidak maka akan
dihitung menggunakan rumus faktorialnya x
*faktorial (x-1);
Dilanjutkan pada fungsi main() dimana pada
fungsi main() kami menambahkan int N sebagai
variabel masukkan pada input dan disimpan
pada variabel tersebut. Yang nantinya akan
dipanggil pada fungsi factorial() dengan nilai
parameter yang digunakan yaitu dari variabel N.
Faktorial
Pada bagian header yang ada pada program kita
menggunakan <iostream> terkait
input/outputnya nanti. Untuk inisialisasi fungsi
rekursifnya kami gunakan int factorial(int x)
dimana jika nilai yang dimasukkan adalah 1
Place your screenshot here
maka nilai balik(return value) merupakan nilai
itu sendiri. Sementara jika tidak maka akan
dihitung menggunakan rumus faktorialnya x
*faktorial (x-1);
Dilanjutkan pada fungsi main() dimana pada
fungsi main() kami menambahkan int N sebagai
variabel masukkan pada input dan disimpan
pada variabel tersebut. Yang nantinya akan
dipanggil pada fungsi factorial() dengan nilai
parameter yang digunakan yaitu dari variabel N.
Pangkat
RUN
Pada bagian header yang ada pada program kita
menggunakan <iostream> agar kita dapat
menggunakan fungsi cin untuk input data dan cout
untuk output. Untuk inisialisasi fungsi rekursifnya
kami gunakan long int pangkatrekursif (int x, int y)
dimana jika nilai yang dimasukkan pada variabel y
adalah 0 maka nilai balik(return value) adalah 1.
Sementara jika tidak maka akan dihitung
menggunakan rumus pangkatnya yaitu x *
pangkatrekursif(x, y-1);
Dilanjutkan pada fungsi main() dimana pada fungsi
main() kami menambahkan int x dan y sebagai
variabel masukkan pada input dan disimpan pada
variabel tersebut. Yang nantinya akan dipanggil
pada fungsi pangkatrekursif() dengan dua nilai
parameter yang digunakan yaitu dari variabel x dan
y.
Pangkat
Pada bagian header yang ada pada program kita
menggunakan <iostream> agar kita dapat
menggunakan fungsi cin untuk input data dan cout
untuk output. Untuk inisialisasi fungsi rekursifnya
kami gunakan long int pangkatrekursif (int x, int y)
dimana jika nilai yang dimasukkan pada variabel y
adalah 0 maka nilai balik(return value) adalah 1.
Sementara jika tidak maka akan dihitung
menggunakan rumus pangkatnya yaitu x *
pangkatrekursif(x, y-1);
Dilanjutkan pada fungsi main() dimana pada fungsi
main() kami menambahkan int x dan y sebagai
variabel masukkan pada input dan disimpan pada
variabel tersebut. Yang nantinya akan dipanggil
pada fungsi pangkatrekursif() dengan dua nilai
parameter yang digunakan yaitu dari variabel x dan
y.

Fungsi rekursif merupakan fungsi yang memanggil
dirinya sendiri. Terdapat dua komponen penting
dalam fungsi rekursif, yaitu kondisi kapan
berhentinya fungsi dan pengurangan atau pembagian
data ketika fungsi memanggil dirinya sendiri.
thanks!

Any questions?

Have a Good day babe :3


©Kelompok 6

Anda mungkin juga menyukai