Implement pow(x, n).
这题真简洁。上来就循环,n个x乘一遍,结果超时了。
其实可以用二分法,x^n = x^(n/2) * x^(n/2) * x^(n%2)
public class Solution {
public double pow(double x, int n) {
double result = powHelper(x, n);
if(n < 0)
result = 1 / result;
return result;
}
public double powHelper(double x, int n){
if(n == 0)
return 1.0;
double w = powHelper(x, n / 2);
if(n % 2 == 0)
return w * w;
else
return w * w * x;
}
}

本文介绍了一种使用快速幂算法高效计算x的n次方的方法。通过递归将指数拆分为更小的问题,利用x^n=x^(n/2)*x^(n/2)*x^(n%2)这一性质,大幅降低了计算复杂度。

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



