La idea central es
Cuando n es un número par, a^n = a^n/2 × a^n/2
Cuando n es un número impar, a^n = a^(n-1)/2 × a^(n-1)/2 × a
El código es el siguiente:
Copie el código de código de la siguiente manera:
poder de clase pública {
público estático vacío principal (String [] argumentos) {
System.out.println(potencia(5.5,5));
}
doble potencia estática privada (doble base, exponente int) {
si (exponente == 0)
devolver 1;
si (exponente == 1)
base de retorno;
doble resultado = potencia(base, exponente >> 1);
resultado *= resultado;
si ((exponente & 0x1) == 1)
resultado *= base;
resultado de devolución;
}
}
El código también utiliza una operación de desplazamiento a la derecha para reemplazar la división por 2 y una operación AND bit a bit para reemplazar el resto para determinar la paridad, lo que hace que el algoritmo sea mucho más eficiente.