实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,x^n)。
递归+分治。
把一个数的n次幂拆解成x^2的n/2次幂。
class Solution {
public:
double quickMul(double x, int N)
{
if(N==0)//终止条件。
return 1;
double y = quickMul(x,N/2); //递归入栈,到最后一次N=1,余数为1,return 1*1*x.
if(N%2==0) return y*y;
else return y*y*x;
}
double myPow(double x, long n) {
//由于用了-n,所以当n=INT_MAX时,-n会溢出,所以这里把n变成long型就能通过
return (n>=0)?quickMul(x,n):1/quickMul(x,-n);
}
};