publicclassPow{publicstaticvoidmain(String[] args){double res =myPow(2,-3);
System.out.println(res);}//思路1:循环计算 n次 x相乘,时间复杂度O(n), 当n非常大时,效率低publicstaticdoublemyPow(double x,int n){double res =1.0;if(n ==0){
res =1;}else{if(n >0){for(int i =1; i <= n; i ++){
res *= x;}}else{for(int i =1; i <=-n; i ++){
res /= x;}}}return res;}//思路1:快速幂的方法,我们每次都计算前一个结果的平方,比如x^2-->x^4-->x^8//对于n,只需先计算x^(n/2)下取整的次方//n为奇数需要多乘一个 x、偶数不需要//递归publicdoublemyPow02(double x,int n){long N = n;return N >=0?quickMul(x, N):1.0/quickMul(x,-N);}publicdoublequickMul(double x,long N){if(N ==0){return1.0;}double y =quickMul(x, N /2);return N %2==0? y * y : y * y * x;}publicdoublemyPow03(double x,int n){long N = n;return N >=0?quickMul02(x, N):1.0/quickMul02(x,-N);}publicdoublequickMul02(double x,long N){double ans =1.0;double x_contribute = x;while(N >0){if(N %2==1){
ans *= x_contribute;}
x_contribute *= x_contribute;
N /=2;}return ans;}}
public class Pow { public static void main(String[] args) { double res = myPow(2,-3); System.out.println(res); } //思路1:循环计算 n次 x相乘,时间复杂度O(n), 当n非常大时,效率低 public static double myPow(double x, int n) { double res = 1.0