🐥Praktikum 2
Menghitung Hasil Pangkat dengan Algoritma Brute Force dan Divide Conquer
Pengantar
Pada praktikum ini kita akan membuat program untuk menghitung nilai pangkat suatu angka menggunakan 2 jenis algoritma, yaitu, brute force dan divide conquer.
Pecobaan
Pada direktori proyek "
BruteForceDivideConquer
" buatlah kelas baru bernama "Pangkat
".Tambahkan atribut berikut,
public int nilai, pangkat;
Buatlah sebuah method dengan nama
pangkatBF()
.
public int pangkatBF(int a, int n) {
int hasil = 1;
for (int i = 0; i < n; i++) {
hasil = hasil * a;
}
return hasil;
}
Buatlah method lain dengan nama
pangkatDC()
.
public int pangkatDC(int a, int n) {
if(n==0) {
return 1;
} else {
if(n%2==1) {
return (pangkatDC(a, n/2)*pangkatDC(a, n/2)*a);
} else {
return (pangkatDC(a, n/2)*pangkatDC(a, n/2));
}
}
}
Perhatikan apakah sudah tidak ada kesalahan yang muncul dalam pembuatan class
Pangkat
.Selanjutnya buat class baru yang di dalamnya terdapat method main. Class tersebut dapat dinamakan
MainPangkat
. Tambahkan kode pada class main untuk menginputkan jumlah nilai yang akan dihitung pangkatnya.
Scanner sc = new Scanner(System.in);
System.out.println("======================");
System.out.println("Masukkan jumlah elemen yang ingin dihitung : ");
int elemen = sc.nextInt();
Selanjutnya digunakan untuk instansiasi array of objects. Di dalam kode berikut ditambahkan proses pengisian beberapa nilai yang akan dipangkatkan sekaligus dengan pemangkatnya.
Pangkat[] png = new Pangkat[elemen];
for(int i=0; i<elemen; i++) {
png[i] = new Pangkat();
System.out.println("Masukkan nilai yang akan dipangkatkan ke-"+(i+1)+" : ");
png[i].nilai = sc.nextInt();
System.out.println("Masukkan nilai pemangkat ke-"+(i+1)+" : ");
png[i].pangkat = sc.nextInt();
}
Kemudian panggil method
pangkatBF()
danpangkatDC()
.
System.out.println("=====================");
System.out.println("Hasil Pangkat dengan Brute Force");
for(int i=0; i<elemen; i++) {
System.out.println("Faktorial dari nilai "+png[i].nilai+" pangkat "
+png[i].pangkat+" adalah "+pangkatBF(png[i].nilai, png[i].pangkat));
}
System.out.println("=====================");
System.out.println("Hasil Pangkat dengan Divide and Conquer");
for(int i=0; i<elemen; i++) {
System.out.println("Faktorial dari nilai "+png[i].nilai+" pangkat "
+png[i].pangkat+" adalah "+pangkatDC(png[i].nilai, png[i].pangkat));
}
System.out.println("=====================");
Verifikasi Hasil Percobaan
Pastikan output dari program serupa dengan gambar berikut,

Pertanyaan
Pada method
pangkatDC()
terdapat potongan kode sebagai berikut,
if(n%2==1) {
return (pangkatDC(a, n/2)*pangkatDC(a, n/2)*a);
} else {
return (pangkatDC(a, n/2)*pangkatDC(a, n/2));
}
Apa maksud dari potongan kode tersebut?
Apakah tahap combine sudah termasuk dalam kode tersebut? Tunjukkan!
Last updated