Anda di halaman 1dari 14

STRUKTUR DATA

Fungsi Rekursif
==Big Point Materi Rekursif==
A. Pengantar Fungsi Rekursif
 Rekursif adalah salah satu metode dalam dunia matematika dimana
definisi sebuah fungsi mengandung fungsi itu sendiri.

 Dalam dunia pemrograman, rekursi diimplementasikan dalam


sebuah fungsi yang memanggil dirinya sendiri.

 Fungsi yang berisi definisi dirinya sendiri

 Fungsi yang memanggil dirinya sendiri

 Prosesnya terjadi secara berulang-ulang

 Yang perlu diperhatikan adalah “stopping role”


B. Definisi Fungsi Rekursif
 Fungsi rekursif dalam pemrograman merupakan fungsi yang memanggil
dirinya sendiri. Fungsi rekursif sering dibayangkan seperti perulangan.
Karena tingkah lakunya yang mengulang-ulang setiap pemanggilan dirinya.

 Saat sebuah fungsi melakukan rekursi, fungsi tersebut membutuhkan


percabangan atau perulangan untuk menghentikan rekursi tersebut.
Rekursi bisa menjadi seperti "perulangan bercabang" yang memiliki
parameter. Jika tidak maka program akan mengalami error karena
kekurangan memori.
fungsi rekursif memiliki dua ciri khas:

 Fungsi rekursif selalu memiliki kondisi yang menyatakan kapan fungsi


tersebut berhenti. Kondisi ini harus dapat dibuktikan akan tercapai, karena
jika tidak tercapai maka kita tidak dapat membuktikan bahwa fungsi akan
berhenti, yang berarti algoritma yang dibuat tidak benar.

 Fungsi rekursif selalu memanggil dirinya sendiri sambil mengurangi atau


memecahkan data masukan setiap panggilannya. Hal ini penting diingat,
karena tujuan utama dari rekursif ialah memecahkan masalah dengan
mengurangi masalah tersebut menjadi masalah-masalah kecil.

Setiap fungsi rekursif yang ada harus memenuhi kedua persyaratan di atas
untuk memastikan fungsi rekursif dapat berhenti dan memberikan hasil.
C. Karakteristik Fungsi Rekursif
Teknik rekursif sendiri adalah bentuk implementasi dari algoritma dengan tipe
divide and conquer. Sebuah algoritma dengan tipe ini memiliki 3 tahapan
umum yakni:

 Divide, membagi/memecah persoalan secara terus menerus ke dalam


bentuk yang lebih kecil.

 Conquer, memecahkan persoalan yang sudah diperkecil hingga mencapai


ukuran dimana ia dapat dapat dipecahkan sendiri (base scenario)

 Combine, menggabungkan pemecahan/solusi dari seluruh persoalan kecil


hingga menjadi solusi untuk persoalan awal.
D. Contoh (1) Rekursif
Contoh fungsi rekursif 1: faktorial

Rumus matematis bilangan faktorial :

1!=1

2! = 2 x 1

3! = 3 x 2 x 1

n! = n x (n-1) x (n-2) …. x 3 x 2 x 1

n! = n x (n-1)!
Mari kita petakan rumus bilangan faktorial dengan tahapan teknik
rekursif:

 Divide, n! = n x (n-1)!, artinya bahwa n! dapat dipecahkan bila kita


mengetahui nilai (n-1)!, dan seterusnya hingga bentuk terkecil yang bisa
dipecahkan langsung yakni 1!

 Conquer, jika persoalan sudah mencapai 1!, kita sudah mencapai base
scenario, dan nilainya dapat langsung kita berikan yakni 1!=1.

 Combine, menggabungkan seluruh hasil pada tahap conquer dari 1!


hingga n!
Program :
Function fakt (n: integer) : integer;
Var n:integer ;
Begin
If n=0 then
Fakt:=1
Else
Fakt:=n*Fakt(n-1);
End;
D. Contoh (2) Rekursif
Contoh fungsi rekursif 2: Deret Fibonacci

Rumus matematis bilangan fibonacci

f(1) = 1

f(2) = 1

f(3) = 1 + 1 = 2

f(4) = 2 + 1 = 3

f(5) = 3 + 2 = 5

Deret fibonacci: 1, 1, 2, 3, 5, …, …, …, …

Rumus Fibonacci: fibo (n) = fibo (n-1) + fibo (n-2)


Contoh mencari Fibonacci:

Diketahui n = 2

Fibo (n) = Fibo (n-1) + Fibo (n-2)


Fibo (2) = Fibo (2-1) + Fibo (2-2)
Fibo (2) = Fibo (1) + Fibo (0)
= 1 + 0
= 1
Terbukti bahwa nilai Fibo(2) = 1, Untuk selanjutnya nilai awal
Adalah Fibo(1) dan Fibo(2) yang masing-masing bernilai 1
Diketahui n = 3

Fibo (n) = Fibo (n-1) + Fibo (n-2)


Fibo (3) = Fibo (3-1) + Fibo (3-2)
Fibo (3) = Fibo (2) + Fibo (1)
= 1 + 1
= 2

Secara deret dapat dilihat hasilnya

1 1 2 ?… ?… ?…
f1 f2 f3 f4 f5 dst
Diketahui n = 4

Fibo (n) = Fibo (n-1) + Fibo (n-2)


Fibo (4) = Fibo (4-1) + Fibo (4-2)
Fibo (4) = Fibo (3) + Fibo (2)
= Fibo (3) + 1
= Fibo (2) + Fibo (1) + 1
= 1 + 1 +1
= 3

Secara deret dapat dilihat hasilnya

1 1 2 3 … …
f1 f2 f3 f4
LATIHAN
Berdasarkan rincian perhitungan bilangan fibonacci pada slide
sebelumnya, Tentukan nilai fibonacci untuk :

(1) n=5
(2) n=6
(3) n=7
(4) n=8
(5) n=9
LATIHAN
Diketahui:
f(0) = 3
f(n + 1) = 2f(n) + 3
Maka
f(0) = 3
f(1) = 2f(0) + 3 = 23 + 3 = 9
Tentukan nilai berikut:
f(2) =
f(3) =
f(4) =
f(5) =
f(6) =

Anda mungkin juga menyukai