tema:
Dado un tipo de base doble y de punto flotante exponente tipo int entero. Buscando exponente de la base de poder.
Asegúrese de que la base y exponente no son simultáneamente 0
Respuesta:
Solución uno:
El uso directo de las funciones de biblioteca Math.pow (), el código siguiente:
public class Solution {
public double Power(double base, int exponent) {
return Math.pow(base,exponent);
}
}
Solución dos:
El uso de un bucle, una por una, a prestar atención a: determinar si el índice es negativo; Nota desbordamiento exponente, el código de la siguiente manera:
public class Solution {
public double Power(double base, int exponent) {
if(exponent==0){
return 1;
}
boolean flag = (exponent>0);
long exp = (long)Math.abs((long)exponent);
double result = 1;
for(long i=0;i<exp;i++){
result = result*base;
}
if(!flag){
result = 1/result;
}
return result;
}
}
Solución tres:
Dicotomía, de la siguiente manera:
public class Solution {
public double Power(double base, int exponent) {
if(exponent==0){
return 1;
}
boolean flag = (exponent>0);
long exp = (long)Math.abs((long)exponent);
double result = 1;
double cur = base;
for(long i=exp;i>0;i=i/2){
if(i%2==1){
result = result*cur;
}
cur = cur*cur;
}
if(!flag){
result = 1/result;
}
return result;
}
}