Anda di halaman 1dari 10

REKURSION (REKURSIF)

Pertemuan 8
PENGERTIAN REKURSIF

 Apa yang dimaksud dengan rekursif?


 Rekursif adalah algoritma yang memungkinkan sebuah method atau cara untuk
memanggil fungsinya sendiri.
 Dengan begitu program akan mengalami looping, karena jika sebuah method
memanggil fungsinya sendiri, maka statement didalamnya akan dieksekusi ulang.
 Perlu kalian ingat, supaya tidak terjadi Infinitely Looping atau Perulangan terus
menerus, kita perlu menambahkan sebuah statement kondisi dimana program
akan berakhir jika pembatasnya sudah terpenuhi.
LANJUTAN…

 Pada fungsi rekursif terdapat blok kode:


 Basis –> kode yang menjadi titik berhenti dari proses rekursif
 Rekursif –> kode dimana sebuah blok program memanggil dirinya sendiri
 Rekursif ini tidak hanya berlaku pada method saja melainkan juga bisa pada function.
 Rekursif hampir sama seperti perulangan hanya saja rekursif tidak menggunakan sintaks
perulangan di dalamnya seperti for, while, dan do-while.
 Algoritma Rekursif jarang digunakan oleh seorang programmer untuk kondisi
perulangan karena sulit dan juga ribet dibandingkan dengan syntax perulangan seperti
while, do-while dan for loops.
 Tetapi walaupun sulit, sebagai seorang promgrammer harus tetap harus mempelajari
rekursif ini.
CONTOH PRAKTEK 1: MENAMPILKAN DERET BILANGAN
CONTOH PRAKTEK 2: MENGHITUNG FAKTORIAL
CONTOH PRAKTEK 3: DERET BILANGAN
GENAP
CONTOH PRAKTEK 4: MEMBUAT SEGITIGA SIKU-SIKU
public class Main2 {
    public static void main(String[] args) {
         cetakSegitigaSiku(1, 1, 5);
     }
     static void cetakSegitigaSiku(int row, int col,
int batas) {
         if (row <= batas) {
             if (col <= row) {
                 System.out.print("* ");
             }
             if (col == row) {
                 System.out.println();
                 cetakSegitigaSiku(++row, 1, batas);
             }
             else {
                 cetakSegitigaSiku(row, ++col, batas);
             }
         }
     }
 }
CONTOH 5: BILANGAN FIBONACCI
} else if (index == 1) {
public class Main3 {
   
                System.out.print(temp2 + " ");
    // variable global
   
                str += temp2 + ";";
    static int index = 0;
 
 
            } else {
    static String str = "";
 
                  String[] arr = str.split(";");
    public static void main(String[] args) {  
                  temp1 = Integer.parseInt(arr[arr.length - 1]);
        cetakFibonacci(10);  
                  temp2 = Integer.parseInt(arr[arr.length - 2]);
    }  
                  System.out.print((temp1 + temp2) + " ");
    static void cetakFibonacci(int batas) {  
                  str += (temp1 + temp2) + ";";
        int temp1 = 0;  
              }
        int temp2 = 1;  
              index++;
        if (index < batas) {
 
            cetakFibonacci(batas);
 
 
            if (index == 0) {         }
   
                System.out.print(temp1 + " ");     }
   
                str += temp1 + ";"; }
CONTOH 6: MEMBUAT SEGITIGA PARAMIDA
import java.util.Scanner;
public class belajar_rekursif {
static void printSpasi(int j, int i) {
static int baris = 5;
if (j < baris - i - 1) {
public static void main(String[] args){
System.out.print(" ");
Scanner input = new Scanner(System.in);
printSpasi(j + 1, i);
System.out.print("Masukan Jumlah Baris: ");
}
baris = input.nextInt();
}
printPyramid(0);
static void printBintang(int k, int i) {
}
if (k > baris - i - 1) {
static void printPyramid(int i) {
System.out.print("* ");
printSpasi(0, i);
printBintang(k - 1, i);
printBintang(baris, i);
}
System.out.println();
}
}
if (++i < baris)
printPyramid(i);
}
PROJECT REKURSIF
1. Buatlah program rekursif untuk keluaran sebagai berikut:

Masukkan suatu indeks untuk bilangan Fibonacci: …


Bilangan Fibonacci pada indeks … adalah …

2. Buatlah program rekursif untuk keluaran sebagai berikut:


Masukkan suatu integer non-negatif: …
Faktorial dari … adalah ….

3. Buatlah program untuk mengecek apakah kata-kata “papa”, ”kodok”, “ada”, “abi”, “a”,
“anda”, “anna” itu termasuk string Palindrome atau bukan?  String dikatakan suatu
palindrome bila menghasilkan suatu string yang sama jika dibaca dari kiri maupun dari
kanan. 

Anda mungkin juga menyukai