Pow(x, n)
题目
Implement pow(x, n).
思路
pow(x, n),即x的n次方。通过递归,每次判断n是不是2的倍数,如果不是,减1后再除以2,如果n等于1或者-1,返回x或者1/x。
代码
class Solution {
public:
double myPow(double x, int n) {
map<int, double> dic;
double result;
int flag;
if (n == 0 || (x-1 < 0.00001 && x > 1)) {
return 1;
}
result = helper(x, n);
return result;
}
double helper(double x, int n) {
while (true) {
if (n == 1) {
return x;
} else if (n == -1) {
return 1 / x;
}
if (n % 2 == 0) {
double result = helper(x, n / 2);
return result * result;
} else {
double result = helper(x, (n - 1) / 2);
return result * result * x;
}
}
return 0;
}
};