这道题目是求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;
}
}
}
快速幂运算
本文介绍了一种高效的计算x的n次方的方法,通过分治思想将复杂度从O(n)降低到O(logn)。文中提供了具体的算法实现代码,并讨论了正负指数的处理方式。
593

被折叠的 条评论
为什么被折叠?



