思路太简单了,快速幂嘛,二分下去就可以得到log级的算法。
但是!陷进重重,主要在这里,(1.00000, -2147483648),如果一进函数发现n < 0然后将n置为正数再算的话,在这里就会出现问题,整数便会溢出。因此需要变换思路。
class Solution {
public:
double pow(double x, int n) {
if (n == 0)
return 1;
double tmp = pow(x, n / 2);
if (n % 2 == 0)
return tmp * tmp;
else if (n > 0)
return tmp * tmp * x;
else
return tmp * tmp / x;
}
};
http://oj.leetcode.com/problems/powx-n/