题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
这个题目其实和前面的快速幂一毛一样啊,刚开始想底数是double会不会有不同,想了想,靠,没有关系。这里就只需考虑底数为0,指数为1,指数小于0时的情况。
指数我们拷贝一份,原始底数保留作为判断条件。当底数小于0时,最后我们返回的值肯定是1/result了
public class Solution {
public double Power(double base, int exponent) {
double re=1;
int k=exponent;
if(exponent==0)return 1;
if(base==0)return 0;
if(k<0)k=-exponent;
while(k!=0) {
//如果与1 &为1那么必定为奇数,此处操作相当于奇数减一
if((k&1)==1)re*=base;
//此处相当于将指数划分为 2*(n/2)
base*=base;
//移位运算 指数右移相当于对半分
k>>=1;
}
//根据指数是否小于0 来决定返回值
return exponent<0?1/re:re;
}
}