。。。剑指Offer之——数值的整数次方。。。

 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     }
原文地址:https://www.cnblogs.com/yingmeng/p/10777791.html