L'idée centrale est
Lorsque n est un nombre pair, a^n = a^n/2 × a^n/2
Lorsque n est un nombre impair, a^n = a^(n-1)/2 × a^(n-1)/2 × a
Le code est le suivant :
Copiez le code comme suit :
puissance de classe publique {
public static void main (String[] arguments) {
System.out.println(power(5.5,5));
}
double puissance statique privée (double base, exposant int) {
si (exposant == 0)
renvoyer 1 ;
si (exposant == 1)
base de retour ;
double résultat = puissance (base, exposant >> 1);
résultat *= résultat ;
si ((exposant & 0x1) == 1)
résultat *= base ;
renvoyer le résultat ;
}
}
Le code utilise également une opération de décalage à droite pour remplacer la division par 2 et une opération ET au niveau du bit pour remplacer le reste afin de déterminer la parité, ce qui rend l'algorithme beaucoup plus efficace.