这道题目是求x的n次方。
可以选择用n个x相乘,复杂度为O(n)(负数的-n个相乘再求倒数)
另外就是采取分治来算
分解为pow(x,n/2)*pow(x,n/2)
最后的复杂度应该为logn+logn即为O(logn)
代码如下:
public double myPow(double x, int n) {
if (n==0) {
return 1;
}
double temp=myPow(x, n/2);
if (n%2==0) {
return temp*temp;
}
else {
if (n>0) {
return temp*temp*x;
}
else {
return temp*temp/x;
}
}
}