Implement pow(x, n).
class Solution {
public:
double pow(double x, int n) {
double result = helper(x, std::abs(n));
return n > 0 ? result : 1/result;
}
double helper(double x, int n)
{
if(n == 0)
return 1;
if(n == 1)
return x;
if(n == 2)
return x*x;
return helper(helper(x, n/2), 2) * ( n%2 == 0 ? 1 : x);
}
};
Round 2:
class Solution {
public:
double pow(double x, int n) {
double result = helper(x, n);
return n > 0 ? result : 1/result;
}
private:
double helper(double x, int n)
{
if(n == 1)
return x;
if(n == 0)
return 1;
double temp = helper(x, n/2);
if(n % 2 == 0)
{
return temp*temp;
}
else
return temp*temp*x;
}
};