Ide intinya adalah
Jika n bilangan genap, a^n = a^n/2 × a^n/2
Jika n bilangan ganjil, a^n = a^(n-1)/2 × a^(n-1)/2 × a
Kodenya adalah sebagai berikut:
Copy kode kodenya sebagai berikut:
kelas publik Kekuatan {
public static void main(String[] args) {
Sistem.keluar.println(daya(5.5,5));
}
kekuatan ganda statis pribadi (basis ganda, int eksponen) {
jika (eksponen == 0)
kembali 1;
jika (eksponen == 1)
basis kembali;
hasil ganda = pangkat(basis, eksponen >> 1);
hasil *= hasil;
jika ((eksponen & 0x1) == 1)
hasil *= basis;
hasil pengembalian;
}
}
Kode ini juga menggunakan operasi pergeseran ke kanan untuk menggantikan pembagian dengan 2, dan operasi AND bitwise untuk menggantikan sisanya guna menentukan paritas, yang membuat algoritme jauh lebih efisien.