Die Kernidee ist
Wenn n eine gerade Zahl ist, ist a^n = a^n/2 × a^n/2
Wenn n eine ungerade Zahl ist, ist a^n = a^(n-1)/2 × a^(n-1)/2 × a
Der Code lautet wie folgt:
Kopieren Sie den Codecode wie folgt:
öffentliche Klasse Power {
public static void main(String[] args) {
System.out.println(power(5.5,5));
}
private statische Doppelpotenz (doppelte Basis, int Exponent) {
if (Exponent == 0)
Rückgabe 1;
if (Exponent == 1)
Rückkehrbasis;
double result = power(base, exponent >> 1);
Ergebnis *= Ergebnis;
if ((Exponent & 0x1) == 1)
Ergebnis *= Basis;
Ergebnis zurückgeben;
}
}
Der Code verwendet außerdem eine Rechtsverschiebungsoperation, um die Division durch 2 zu ersetzen, und eine bitweise UND-Operation, um den Rest zu ersetzen und so die Parität zu bestimmen, was den Algorithmus wesentlich effizienter macht.