数值的整数次方

121 阅读1分钟

数值的整数次方

实现函数double Power(double base, int exponent),求base的 exponent次方。

不得使用库函数,同时不需要考虑大数问题。

注意:
不会出现底数和指数同为0的情况
当底数为0时,指数一定为正

样例1
输入:10 ,2
输出:100

样例2
输入:10 ,-2  
输出:0.01

暴力

时间复杂度O(n)

class Solution {
    public double Power(double base, int exponent) {
        if(exponent == 0){
            return 1;
        }
        double num = 1;
        if(exponent > 0){
            for(int i = 0;i < exponent;i++){
                num *= base;
            }
            return num;
        }
        for(int i = 0;i > exponent;i--){
            num /= base;
        }
        return num;
  }
}

快速幂

时间复杂度O(logn)

class Solution {
    public double Power(double base, int exponent) {
        boolean flag = true;
        if(exponent < 0){
            flag = false;
            exponent = -1 * exponent;
        }
        double res = 1;
        while(exponent != 0){
            if((exponent & 1) != 0){
                res = res*base;
            }
            exponent = exponent >> 1;
            base = base * base;
        }
        if(flag){
        	return res;
        }
        else return 1/res;

  }
}