1 public double Power(double base, int exponent) {
2 // exponent正负都一样,如果为负数,最终结果取倒数
3 // 为了方便,取其绝对值
4 int n=Math.abs(exponent);
5 // 下面两个if是递归终止条件
6 if(n==0)
7 return 1;
8 if(n==1)
9 return base;
10 // 分治思想,计算一半的base相乘,n>>1表示n/2
11 double result=Power(base,n>>1);
12 // result的结果是一半的base相乘,所以得平方
13 result*=result;
14 // 判断n是不是奇数,如果是奇数,则最后一位一定是1,那么n跟1相与的结果就是1
15 if((n&1)==1)
16 // 如果n是奇数,还要再次乘以一个base
17 result*=base;
18 // 如果exponent是负数,最终结果取倒数
19 if(exponent<0)
20 result=1/result;
21 return result;
22 }