Anda di halaman 1dari 6

TUGAS

ALGORITMA & PEMROGRAMAN


Rekursif serta Penyelesaian Masalah Kaleng Bersusun dalam Java

ALGORITMA DAN PEMROGRAMAN KELAS C


Disusun oleh:
Kelompok 5

1. Muhammad Ghiffari (5026201044)


2. Muhammad Fathurrahman (5026201139)
3. Chang Hong Kwang (5026201127)

INSTITUT TEKNOLOGI SEPULUH NOPEMBER


SURABAYA
2021
Pengantar
A. Pengertian Rekursi
Keadaan disebut rekursi ketika sesuatu didefinisikan oleh sesuatu itu sendiri.
Rekursi banyak diaplikasikan di dalam matematika dan ilmu komputer, yaitu ketik
a suatu fungsi dideklarasikan memuat fungsi itu sendiri. Biasanya rekursi dibuat se
demikian rupa sehingga tidak terjadi perulangan tak terhingga.
Di dalam Java, rekursi adalah suatu proses saat suatu method memanggil
dirinya sendiri terus menerus. Teknik ini berjalan dengan cara membedah masalah
yang rumit ke dalam masalajh-masalah yang lebih sederhana yang lebih mudah
untuk
diselesaikan. Suatu method yang memanggil dirinya sendiri disebut method rekurs
if. Kelebihan dari rekursi adalah hasil code menjadi lebih singkat.Sedangkan kekur
angannya adalah code nya relatif susah untuk dimengerti,programnya membutuhka
n space
requirement yang lebih besar dari iterasi biasa karena semua fungsi akan tetap bera
da di stack sampai base case-nya terpenuhi,
dan karena itu membutuhkan waktu yang lebih lama dari metode iterasi biasa.
Fungsi rekursif dapat megalami rekursi tak hingga. Rekursi tak hingga terjad
i ketika fungsi itu tidak berhenti untuk memanggil dirinya sendiri.
Oleh karena itu, suatu fungsi rekursif harus mempunyai suatu kondisi saat suatu fu
ngsi berhenti memanggil dirinya sendiri.
B. Contoh rekursi dalam Java
Berikut adalah contoh penggunaan rekursi dalam program faktorial
public class factorial {

public static void main(String[] args) {


System.out.println("Hasil
5 faktorial adalah "+faktorial(5));
}
//fungsi faktorial menggunakan rekursi
static int faktorial(int n){
if (n == 1) return 1; //base case
return(n * faktorial(n-1)); //rekursive
}
}
Penjelasan
Fungsi faktorial di atas menggunakan metode rekursif dengan base
case jika parameter n bernilai 1 maka fungsi nya menghasilkan nilai 1.
Saat fungsi dipanggil dengan parameter lebih besar dari 1, misalkan 5, maka fungsi
akan menghasilkan menjalankan recursion step sampai mencapai base
case. Berikut gambaran proses fungsi menghitung hasil dari 5 faktorial.
faktorial(5)-> 5*faktorial(4)
faktorial(4)-> 4*faktorial(3)

faktorial(3)-> 3*faktorial(2)

faktorial(2)-> 2*faktorial(1)

faktorial(1)-> 1

return 1

return 2*1 = 2

return 3*2 = 6

return 4*6 = 24

return 5*24 = 120

C. Penyelesain Masalah dan Penjelasan


import java.util.Scanner;

public class KalengBersusun {


public static void main(String[] args){
Scanner userInput = new Scanner(System.in);
System.out.println("Tinggi tumpukan kaleng: ");
int n = userInput.nextInt();
System.out.println("Total kaleng yang dibutuhkan =
" + jumlahKaleng(n));
}
static int jumlahKaleng(int n){
// Base Case
if (n<=0) {
return n;
}
// Recursive
return n + jumlahKaleng(n-1);
}
}

Program di atas mempunyai sebuah method jumlahKaleng yang


berfungsi untuk menghitung total kaleng yang dibutuhkan untuk n susun kaleng.
Method tersebut menggunakan method static dan tanpa void sehingga method
tersebut akan mengembalikan sesuatu (Jika dideklarasikan dengan void maka
method hanya menjalankan aksi tanpa mengembalikan sesuatu). static
int jumlahKaleng(int n) berarti method tersebut mengembalikan sesuatu b
erupa integer (bilangan bulat) dan menerima parameter bilangan bulat (n).
Selanjutnya, method diberi base case agar fungsi rekursif tidak
mengalami perulangan tak hingga. Base case-
nya dalam method ini yaitu saat n<=0. Selama fungsi belum mencapai base
case, fungsi akan terus dijalankan. Misalkan kita ingin mencari berapa jumlah kale
ng yang dibutuhkan dalam 5 tumpukan maka berikut adalah proses method jumla
hKaleng mencari total kaleng yang dibutuhkan.
jumlahKaleng(5)-> return 5+jumlahKaleng (4)
jumlahKaleng (4)-> return 4+jumlahKaleng (3)
jumlahKaleng (3)-> return 3 + jumlahKaleng (2)
jumlahKaleng (2)->return 2 + jumlahKaleng (1)
jumlahKaleng (1)-> return 1 + jumlahKaleng(0)
JumlahKaleng (0) -> return 0

jumlahKaleng (1)-> return 1+0 = 1

jumlahKaleng (2)-> return 2+1 = 3

jumlahKaleng (3)-> return 3+3 = 6

jumlahKaleng (4)-> return 4+6 = 10


jumlahKaleng (5) -> return 5+10=15
Maka jumlah kaleng yang dibutuhkan untuk membuat 5 susun adalah 15 kaleng. D
engan cara yang sama, kita bisa mencari jumlah kaleng yang dibutuhkan untuk 50
susun kaleng, yaitu 1275 kaleng.
D. Screen shot hasil & Comment
Output:
Jika input
yang dimasukkan sejumlah 50 tumpukan maka kaleng yang dibutuhkan ialah seju
mlah 1275 kaleng
DAFTAR PUSTAKA

https://www.w3schools.com/java/java_recursion.asp
https://www.javatpoint.com/recursion-in-java

Anda mungkin juga menyukai