。。。剑指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 }

更多精彩