Anda di halaman 1dari 22

LAPORAN STRUKTUR DATA

“Implementasi Fungsi Rekursif”

DISUSUN OLEH:

Nama : I Komang Satya Dharma Purusatama


NIM : 1908561024
Kelas : A
Prodi : Teknik Informatika

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM


UNIVERSITAS UDAYANA
2020
BAB I
PENDAHULUAN

1.1 Pengertian Metode Rekursif

Metode rekursif adalah proses yang memanggil dirinya sendiri. Dalam metode ini
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, rekursif merupakan Teknik pemrograman yang berdaya
guna untuk digunakan pada pekerjaan pemrograman dengan mengekspresikannya ke dalam
modul-modul dari program lain dengan menambahkan langkah-langkah sejenis.
Dengan metode tersebut hasil dari proses awal digunakan lagi untuk proses berikutnya
sampai batas yang diinginkan. Fungsi yang dibuat/digunakan dalam metode tersebut akan
berdampak pada:
1. Adanya peningkatan readability (kemudahan untuk di baca);

2. Modularity (pemecahan program menjadi modul-modul);

3. Reusability (dapat digunakan kembali) program yang aplikasi.


Bentuk dari sifat rekrsif adalah sebagai berikut:
1. Ada bagian base case dan ada bagian general case.

2. Paling sedikit mempunyai general base.

3. Selalu dalam bentuk fungsi-fungsi.

4. Selalu menggunakan statement percabangan.

1.1.1 Rekursif factorial

Salah satu contoh yang sering digunakan untuk menjelaskan rekursif adalah
factorial. Dimana fungsi faktorial ini merupakan sebuah fungsi perkalian berurut dari
angka 1 sampai dengan angka yang di maksud. Dalam laporan ini terdapat du cara yang
digunakan untuk menentukan bilangan faktorial, diantaranya adalah:
Iterative

int factoriall (int a)

Int i, product=1; For (i=a;


i<1; --1)
product=product * i; return
product;
}

Recursion

Int factorial2 (int a)

If (a == 0)

return 1;

else

return a * factorial2 (n-1);

1.1.2 Multiplication

Multiplication adalah contoh ke dua dalam laporan ini yang dapat menjelaskan
fungsi rekursif. Dimana multiplication merupakan sebuah fungsi perkalian yang
mengalikan dua buah bilangan atau lebih dengan menggunakan fungsi rekursif.
Multiplication

Int multiplication (int m, int n)

If (n == 1);

return m;
else

return m + multiplication (m, n-1);

}
1.1.3 Powerfuction

Powerfunction adalah contoh ke tiga dalam laporan ini yang dapat menjelaskan
fungsi rekursif. Dimana powerfunction itu adalah fungsi pemangkatan suatu bilangan
yang dapat dilakukan secara rekursif.
Powerfunction

Double power (double x, int n)

If (n == 0)

return 1;

else

return x * power (x, n-1);

1.1.4 Fibonacci

Fibonacci adalah contoh ke empat dalam laporan ini yang dapat menjelaskan fungsi
rekursif. Dimana Fibonacci itu adalah suatu barisan bilangan yang merupakan hasil
penjumlahan dua buah bilangan sebelumnya yang dapat dilakukan secara rekursif.
Fibonacci
Int fib (int n)

If (n == 0 || n == 1) return n;
else
return fib (n-1) + fib (n-2);

1.1.5 Check string palindrome or not

Palindrome adalah salah satu jenis kata, kalimat, ungkapan, atau bilangan unik yang
apabila kita baca dari depan dan belakang akan sama saja. Contohnya seperti: level, isi,
wow dan lain sebagainya.
BAB II
ISI

2.1 Teknik Percabangan Switch Case

Kondisi switch case adalah percabangan kode program dimana kita


membandingkan isi sebuah variabel dengan beberapa nilai jika proses perbandingan
tersebut menghasilkan nilai true, maka block kode program akan di jalankan.
Dalam program kali ini, saya menggunakan Teknik percabangan switch case untuk
menggabungkan program menjadi satu buah program program.
Contoh:

void utama(){

Deklarasi variabel

int a;
Tampilan untuk pemilihan oprasi

cout <<"\n Selamat Datang di Program ";

cout <<"\n REKURSIF ";

cout <<"\n ==================================";

cout <<"\n **********************************";

cout <<"\n ==================================";

cout <<"\n\n Terdapat beberapa opsi:";

cout <<"\n 1. Recursive factorial"<<"\n 2. Multiplication"<<"\n 3. Power


fuction"<<"\n 4. Fibonacci Function"<<"\n 5. Palindrome";

cout <<"\n\n Anda ingin memilih opsi apa ? :";

cin >> a;
Deklarasi fungsi

switch (a){

case 1 :

int c;

cout <<"\n Terdapat beberapa opsi : ";

cout <<"\n 1. Metode Iterative "<< "\n 2. Metode Recursion ";

cout <<"\n\n ingin memilih opsi yang mana ? : ";

cin >> c;

switch (c){

case 1 :

RFac1();

break;

case 2 :

RFac2();

break;

default :

cout <<" Maaf, opsi yang anda maksud itu tdak ada " ;

break;

break;

case 2 :

Multi();

break;
case 3 :

Pangkat();

break;

case 4 :

Fibo();

break;

case 5 :

Palin();

break;

default :

cout <<" Maaf, opsi yang anda maksud itu tdak ada " ;

break;

2.2 Recursive Factorial

2.2.1 Recursive Iterative

void RFac1 () {

long int number;

cout << " ============================= ";

cout << " \n Masukan bilangan bulat positif : ";

cin >> number;

cout << " =====>> ";

if (number < 0)

cout << " Maaf, bilangan yang anda masukan bukan bilangan bulat positif
.\n";

else

cout <<" "<< number << " Factorialnya adalah : " << Recursive_Iterative(
number ) << endl;
}

long int Recursive_Iterative (long int number){

int i, product=1;

for (i= number; i>1; --i)

product=product * i;

return product;

Output :
2.2.2 Recursive recursion

void RFac2 () {

long int number;

cout << " ============================= ";

cout << " \n Masukan bilangan bulat positif : ";

cin >> number;

cout << " =====>> ";

if (number < 0)

cout << " Maaf, bilangan yang anda masukan bukan bilangan bulat positif .\n";

else

cout <<" "<< number << " Factorialnya adalah : " << Recursive_recursion( number
) << endl;

long int Recursive_recursion (long int number) {

int temp;

if(number == 0) return 1;

temp = number *Recursive_recursion (number - 1);

return temp;

}
Output
2.3 Multiplication

void Multi (){

int m,n;

cout << " ======================";

cout << " \n Masukan nilai pertama :";

cin >> m;

cout << " Masukan nilai kedua :";

cin >> n;

cout << "\n Hasil ==============> :"<<Multiplication_recursion(m, n);

int Multiplication_recursion(int m, int n){

if (m < n)

return Multiplication_recursion(n, m);

else if (n != 0)

return (m + Multiplication_recursion(m, n - 1));

else

return 0;

}
Output :
2.4 Power fuction
void Pangkat (){
double Angka, power;
long int B_Kuadrat;
cout << " =================================";
cout<<"\n Masukan Angka :";
cin>>Angka;
cout<<" Masukan nilai pangkat :";
cin>>B_Kuadrat;
power = Power_function(Angka, B_Kuadrat);
cout<<" =======> Hasil pangkatnya adalah :"<< power;
}

double Power_function(double Angka, long int B_Kuadrat){


if(B_Kuadrat == 0)
return 1;
else if(B_Kuadrat > 0)
return Angka * pow(Angka, B_Kuadrat - 1);
else
return 1 / pow(Angka, - B_Kuadrat);
}
Output :
2.5 Fibonacci Function

long int Fibonacci_Function (int n ){

if((n==1)||(n==0))

return(n);

else

return( Fibonacci_Function(n-1)+
Fibonacci_Function(n-2));

void Fibo()

int n,z=0;

cout << "


===================================
=================";

cout<<"\n Berapa deret bilangan Fibonaci yang


anda inginkan ? : ";

cin>>n;

cout<<"\n Deret Fibonaci : ";

while(z<n)

cout<<" "<< Fibonacci_Function(z);

z++;

}
Output :
2.6 Palindrome

bool Palindrome(string str)

int low = 0;

int high = str.length() - 1;

while (low < high)

if (str[low] != str[high])

return false;

low++;

high--;

return true;

void Palin()

cout << " =============================


";

string str;

cout << "\n Masukan Kata : ";

cin >> str;

if (Palindrome(str))

cout <<" Kata ("<< str <<") adalah Palindrome";


else

cout <<" Kata ("<< str <<") Bukan Palindrome";

Output :
BAB III
KESIMPULAN

Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Terdapat dua komponen
penting yang terdapat dalam fungsi rekursif, yaitu kapan berhentinya fungsi dan pengurangan atau
pembagian data ketika fungsi memanggil dirinya sendiri.
REFERENSI

Rinaldi Munir. 2005. Algoritma dan Pemrograman dengan Bahasa Pascal dan C. Edisi 3. Buku

2. Bandung : Informatika

Suaraga. 2012. Algoritma dan Pemrograman. Yogyakarta: Andi

Anonim. 2019. Fungsi pow(). Di ambil dari https://www.pythonindo.com/fungsipow/ pada 25


Maret 2020.

Anda mungkin juga menyukai