Implement pow(x, n).
实现乘幂运算,给出的提示是Bianry Search。
其实就是利用公式xn=xn/2∗xn/2∗xn%2x^n = x^{n/2} * x^{n/2} * x^{n\%2}进行运算。
参考代码:
class Solution
{
private:
double power(double x, int n)
{
if (0 == n) return 1;
double v = power(x, n / 2);
// 如果n是偶数,则返回x^(n/2)*x^(n/2)
if (0 == n % 2) return v * v;
// 如果n是奇数,则返回x^(n/2)*x^(n/2)*x^(n%2)
else return v * v * x;
}
public:
double myPow(double x, int n)
{
if (n < 0) return 1.0 / power(x, -n);
else return power(x, n);
}
};