Implement pow(x, n).
思路:
先把 x = 1 或者 -1 判断了,然后将 n 分类讨论, n < 0; n == 0; n == 1, 先计算 pow(x,n/2),然后求其平方,否则时间上过不去。
class Solution {
public:
const double EPSILON = 1e-6;
double pow(double x, int n) {
if (n == 0 && x != 0 || x == 1)
return 1;
if (fabs(x + 1) <= EPSILON)
return (n & 0x1) ? (-1) : 1;
if (n == 1)
return x;
if (n < 0)
return pow(1 / x, -n);
double dtemp = pow(x, n / 2);
if (n & 0x1)
return dtemp * dtemp * x;
else
return dtemp * dtemp;
}
};