Anda di halaman 1dari 16

TIF-1702 Algoritma dan Struktur Data:

Rekursif

Ika Arthalia Wulandari, M. Kom


Rekursif
• Rekursif merupakan alat/cara untuk
memecahkan masalah dalam suatu fungsi atau
procedure yang memanggil dirinya sendiri.

• Contoh penerapan teknik rekursif


1. Perhitungan Nilai Faktorial
2. Pembentukan Barisan Fibonacci
Rekursif
Bentuk deklarasi rekursif:

return_data_type
function_name(parameter_list)
{
...
function_name(...);
...
}
Faktorial
• Fungsi factorial dari bilangan bulat positif n didefinisikan
sebagai berikut:
n!= n.(n-1)! , jika n>1
n!= 1 , jika n=0, 1

• contoh :
3!= 3. 2!
3!= 3. 2. 1!
3!= 3. 2. 1
3!= 6
Faktorial
• Faktorial dari n (ditulis n!), adalah hasil kali dari bilangan
tersebut dengan bilangan di bawahnya, di bawahnya hingga
bilangan 1
• Ada dua cara penyelesaian:
1. Teknik rekursif, menggunakan deklarasi pemanggilan dirinya
sendiri
2. Teknik iteratif, menggunakan looping yang mengalikan masing-
masing bilangan dengan hasil sebelumnya.

n! = (n)(n-1)(n-2) … (1)
Kode Program Faktorial dengan REKURSIF
#include<iostream>
#include<conio.h>
using namespace std;
int faktorial (int bil) {
if(bil==0) return 1;
else //fungsi rekursif
return bil*faktorial(bil-1);
}
int main(){
int n;
cout<<"Masukkan nilai n: "; cin>>n;
cout<<"Hasil faktorial : "<<faktorial(n);
}
Kode Program Faktorial dengan ITERATIF
#include<iostream>
using namespace std;
int main(){
int n, hasil=1;
cout<<"Masukkan nilai n: "; cin>>n;
if(n<0) return 0;
else {
for(int i=n; i>=1; i--) {
hasil=hasil*i;
}
}
cout<<"Hasil Faktorial: "<<hasil;
}
Kode Program Faktorial dengan ITERATIF
#include<iostream>
using namespace std;
int main(){
int n, hasil=1;
cout<<"Masukkan nilai n: "; cin>>n;
if(n<0) return 0;
else {
for(int i=1; i<=n; i++) {
hasil=hasil*i;
}
}
cout<<"Hasil Faktorial: "<<hasil;
}
Deret Fibbonanci
• Barisan bilangan fibbonaci : 1, 1, 2, 3, 5, 8, 13, 21, . . .
• Teknik rekursif pada algoritma untuk menentukan suku ke-n dari
barisan bilangan fibbonaci adalah :
Kode Program Deret Fibbonanci
#include<iostream>
#include<conio.h>
using namespace std;
int fibbonanci(int bil) {
if(bil==0) return 0;
else if(bil<=2) return 1;
else {
return fibbonanci(bil-1)+fibbonanci(bil-2);
}
}
Kode Program Deret Fibbonanci (lanjutan)
int main(){
int n;
cout<<"Masukkan nilai F(n): ";cin>>n;
cout<<"Deret fibonanci F("<<n<<"):
"<<fibbonanci(n);
}
Rekursif
Langkah-langkah untuk mendefinisikan fungsi dengan
domain bilangan cacah:

1.Langkah basis: Definisikan nilai fungsi pada saat nol.


2.Langkah rekursif: Berikan aturan untuk mencari nilai
fungsi untuk setiap bilangan bulat berdasarkan nilai
fungsi pada bilangan bulat yang lebih kecil.
Kelebihan dan Kelemahan Rekursif
• Kelebihan
– solusi sangatlah efisien
– dapat memecahkan masalah yang sulit
dengan tahapan yang mudah dan singkat
• Kelemahan
– sulit dipahami
– perlu stack besar (stack overrun)
Latihan Rekursif
1. Buat program untuk menghitung jumlah deret
S = 1+3+5+7+9+...+(2n+1) menggunakan function rekursif

2. Buat program untuk menghitung jumlah deret


S = 1+2+4+8+16+...+2n menggunakan function rekursif

3. Buat program untuk menghitung jumlah deret


S = 2+3+5+9+17+...+(2n-1) menggunakan function rekursif
Instruksi Tugas
1. Buatlah 6 kelompok (untuk tiap kelas)
a. Kelompok 1 dan 2 (mengerjakan soal 1)
b. Kelompok 3 dan 4 (mengerjakan soal 2)
c. Kelompok 5 dan 6 (mengerjakan soal 3)
2. Kumpulkan via spada, pdf(coding+hasil running)
dan .cpp
3. Deadline Pengumpulan Tugas:
Senin 25 April 2022. Pukul 08.00
SEE YOU NEXT CLASS

FIKOM UMM • TIF-1702 Algoritma dan Struktur Data 17

Anda mungkin juga menyukai