给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
思路:
2^10=4^5=4*16^2=4*256=1024
class Solution {
public:
double Power(double base, int exponent) {
int p = abs(exponent);
double ret = 1.0;
while (p != 0) {
if (p & 1) // 如果是奇数,就提出一个来单独乘
ret =ret*base;
base = base*base;
p >>= 1;
}
return exponent < 0 ? 1 / ret : ret;//指数如果是负数,就取倒数。
}
};