实现doublepow(double x, int n)函数
最简单的方法是将x累乘n次,这种方法原理简单,缺点是时间复杂度为O(n),如果n很大,将消耗很多时间。
第二种方法是采用函数递归的方法。例如对于x^n,我们可以分解为(x^2)^(n/2)的形式。该方法的时间复杂度为O(log n)。
public class Solution {
public double myPow(double x, int n) {
if(n == 0)
return 1;
if(n == 1)
return x;
if(n%2 == 0)
return myPow(x*x, n/2);
else{
if(n>0)
return x*myPow(x*x, n/2);
else
return myPow(x*x, n/2)/x;
}
}
}