You are on page 1of 4

ALGORITMA REKURSIF

Rekursif sendiri adalah suatu fungsi yang memanggil dirinya sendiri. Dalam Rekursif
sebenarnya terkandung pengertian prosedur dan fungsi. Perbedaannya adalah bahwa rekursif
bisa memanggil ke dirinya sendiri, tetapi prosedur dan fungsi harus dipanggil lewat
pemanggil prosedur dan fungsi. Rekursif sendiri sering digunakan dalam perhitungan
matematika, seperti untuk mencari faktorial, menghitung permutasi, kombinasi dan
menghitung bilangan fibonacci.
Algoritma rekursif ini langsung mengimplementasikan definisi rekursif bilangan
fibonacci dalam bentuk fungsi rekursif. Contoh fungsi fibonacci :

Analisis Dari fungsi rekursif di atas, bisa dilihat bahwa T(0) dan T(1) bernilai 1
karena jika inputnya 0 atau 1, program akan melakukan 1 proses yaitu assignment
(permberian nilai). T(n) bernilai T(n-1) + T(n-2) + 1 karena di setiap tahap rekurens, program
akan memanggil fibo(n-1) yang memiliki kompleksitas T(n-1) dan fibo(n-2) yang memiliki
kompleksitas T(n-2), sementara itu untuk menjumlahkan keduanya dibutuhkan 1 proses. Oleh
karena itu :

Jika n=2, T(n) = T(1) + T(0) + 1 = 3, f(n+2) = 3


Jika n=3, T(n) = T(2) + T(1) + 1 = 5, f(n+2) = 5
Jika n=4, T(n) = T(3) + T(2) + 1 = 9, f(n+2) = 8
Jika n=5, T(n) = T(4) + T(3) + 1 = 15, f(n+2) = 13
Jika n=6, T(n) = T(5) + T(4) + 1 = 25, f(n+2) = 21
Jika n=7, T(n) = T(6) + T(5) + 1 = 41, f(n+2) = 34
Jika n=8, T(n) = T(7) + T(6) + 1 = 67, f(n+2) = 55

Dari situ bisa kita lihat bahwa T(n) akan berkembang secara eksponensial. Untuk mencari
notasi O besarnya :
T(n) T(n-1)+ T(n-1)+ T(n-1)
T(n) 3T(n-1)
Sehingga diperoleh T(n) = O(3n). Algoritma ini adalah algoritma yang stabil, kompleksitas
untuk kasus terbaik sama dengan kompleksitas untuk kasus terburuknya.
DERET FIBONACCI
Deret Fibonacci diperkenalkan pada tahun 1202 oleh Leonardo dari Pisa (yang
dikenal sebagai Fibonacci). Deret ini didefinisikan secara rekursif sebagai : f(n) = f(n-1) +
f(n-2) f(0) = 0 f(1) = 1 Sebenarnya terdapat versi lain untuk f(0) dan f(1) yaitu f(0) = 1, f(1) =
1. Namun dalam makalah ini, deret Fibonacci yang digunakan adalah deret yang nilai f(0) = 0
dan f(1) = 1. Selain itu, deret Fibonacci yang dibahas pada makalah ini adalah deret
Fibonacci untuk indeks n bilangan bulat non negatif.
Penjelasan mengenai fungsi FPB dan fungsi fibonacci yang juga menggunakan fungsi
rekursif. Berikut merupakan source code program FPB :
#include <math.h>
#include <iostream.h>
using namespace std;
int FPB(int x, int y);
int main()
{
int X1, X2;
cout << "PERHITUNGAN FPB" << endl;
cout << "Masukkan bilangan pertama : "; cin >> X1;
cout << "Masukkan bilangan kedua : "; cin >> X2;
cout << "Faktor Persekutuan Terbesar = " << FPB(X1,X2)<<endl;
}

int FPB(int x, int y)


{
int hasil;
{
if (y == 0)
hasil = x;
else
hasil = FPB(y,(x%y));
}
return ( hasil);
}

Soure Code FPB

Didalam fungsi FPB, if (y == 0) hasil = x; merupakan statement yang digunakan


untuk memilih satu dari dua alternative pilihan jawaban yang tersedia. Jika nilai y yang di
input sama dengan 0, maka akan menampilkan nilai x yang di input. Tetapi jika nilai y yang
di input tidak sama dengan 0, maka akan menjalankan else, hasil = FPB(y,(x%y));, yaitu
dengan menampilan hasil mod x dan y.
Fungsi fibonacci juga dapat menggunakan fungsi rekursif. Berikut soure code dalam
perhitungan fibonacci:
#include <math.h>
#include <iostream.h>
using namespace std;
int fibonacci(int n);
int main()
{
int n;
cout << "PERHITUNGAN FIBONACCI" << endl;
cout << "Masukkan bilangan : "; cin >> n;
cout << "Fibonacci " << n <<" = " << fibonacci(n) << endl;
}
int fibonacci (int n)
{
if ((n==1)||(n==2))
return (1);
else
return (fibonacci (n-1)+fibonacci(n-2));
}

Soure Code Fibonacci


Di dalam fungsi fibonacci, if((n==1)||(n==2)) merupakan statement yang
digunakan untuk memilih satu dari dua alternative pilihan jawaban yang tersedia. Jika nilai n
yang di input sama dengan 1 atau sama dengan 2, makan akan melakukan printah
return (1) dengan mengembalikan nilai 1 ke bagian yang memanggil
Tetapi jika nilai n yang di input tidak sama dengan 1 atau 2, maka akan menjalankan else
dengan menjalankan return (fibonacci (n-1)+fibonacci(n-2));. Namun
hasil yang di tampilkan bukanlah hasil yang didapat dari perhitungan fibonacci, melainkan
berdasarkan tabel bilangan fibonacci. Misalkan hasil perhitungan fibonacci adalah 3, maka
yang akan ditampilkan adalah 2 sesuai dengan tabel bilangan fibonacci.

CONTOH ALGORITMA FIBONACCI


Function Fibonacci(input n:integer) integer
Deklarasi Lokal
{tidak ada}
Deskripsi
If (n ==1 || n==2) Then
return (l)
Else
return (Fibonacci(n-1)+Fibonacci(n-2))
Endif
ALGORITMA MENENTUKAN BILANGAN TERBESAR
Procedure CariMaks (input

integer, output maks : integer) ( mencari elemen

tersebut dari sekumpulan elemen larik integer


Keluaran : maks (nilai terbesar)
Deklarasi
i : integer
Algoritma

Masukkan

You might also like