思路
将x^n进行分解
例:
x ^ 6
可以分解为0,3,3
x ^ 0: 1
x ^ 3: (x ^ 1) * (x ^ 1) * (x ^ 1)
x ^ 3: (x ^ 1) * (x ^ 1) * (x ^ 1)
x ^ 15
可以分解为1,7,7
x ^ 1: x
x ^ 7: (x ^ 1) * (x ^ 3) * (x ^ 3)
x ^ 7: (x ^ 1) * (x ^ 3) * (x ^ 3)
x ^ -9
可以分解为-1,-4,-4
x ^ -1: 1/x
x ^ -4: (x ^ 0) * (x ^ -2) * (x ^ -2)
x ^ -4: (x ^ 0) * (x ^ -2) * (x ^ -2)
代码
double myPow(double x, int n){
if(n==-1) return 1/x;
if(n==0) return 1;
if(n==1) return x;
double t=myPow(x,n/2);
x=myPow(x,n-2*(n/2))*t*t;
return x;
}```