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