面试题11:数值的整数次方

来源:互联网 发布:大淘客联盟与淘宝联盟 编辑:程序博客网 时间:2024/06/15 20:58

题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。


代码实现:

public class Solution {    public double Power(double base, int exponent) {        if (base == 0 && exponent == 0) {              throw new RuntimeException("invalid input. base and exponent both are zero");          }        if(exponent == 0) {            return 1;        }        if(exponent == 1) {            return base;        }        if(base == 0) {            return 0;        }        int n = Math.abs(exponent);        double result = 0.0;        //递归        //n为偶数,a^n=a^n/2*a^n/2;n为奇数,a^n=(a^(n-1)/2)*(a^(n-1)/2)*a  时间复杂度O(logn)        result = Power(base, n>>1);        result *= result;        if((n&1) != 0) {            result *= base;        }        if(exponent < 0) {            result = 1/result;        }        return result;  }}
原创粉丝点击