/* 时间复杂度为logn b^{9}=b*((b^2)^2)^2) 递归思路: 当n&1不为0时; f(b,n)=f(b,n/2)*b 为奇数时。 当n&1为0时; f(b,n)=f(b,n/2) 为偶数时。 */ class Solution { public: double Power(double b, int n) { if (n < 0) { b = 1 / b; n = -n; }//负数次方归正 double x = b; // 记录x^0, x^1, x^2 ... double ret = 1.0; while (n) { if (n&1) { ret *= x; // 二进制位数是1的,乘进答案。 } x *= x; n >>= 1; } return ret; } };