๐ฅ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