A ideia central é
Quando n é um número par, a^n = a^n/2 × a^n/2
Quando n é um número ímpar, a^n = a^(n-1)/2 × a^(n-1)/2 × a
O código é o seguinte:
Copie o código do código da seguinte forma:
classe pública Poder {
public static void main(String[] args) {
System.out.println(potência(5.5,5));
}
potência dupla estática privada (base dupla, expoente interno) {
se (expoente == 0)
retornar 1;
se (expoente == 1)
base de retorno;
resultado duplo = potência(base, expoente >> 1);
resultado *= resultado;
se ((expoente & 0x1) == 1)
resultado *= base;
resultado de retorno;
}
}
O código também usa uma operação de deslocamento para a direita para substituir a divisão por 2 e uma operação AND bit a bit para substituir o restante para determinar a paridade, o que torna o algoritmo muito mais eficiente.