Demostrar la oferta de seguridad: potencia entera (50 leetcode) Valor

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;
  }
}

 

Publicado 92 artículos originales · ganado elogios 2 · Vistas 8419

Supongo que te gusta

Origin blog.csdn.net/wyplj2015/article/details/104845288
Recomendado
Clasificación