题解 | #数值的整数次方#
数值的整数次方
http://www.nowcoder.com/practice/1a834e5e3e1a4b7ba251417554e07c00
方法1 递归+快速幂
2的8次方只需要求一次2的四次方两数相乘即可
如果次方数是个奇数的话再乘个base
class Solution { public double Power(double base, int exponent) { if (exponent<0){ base=1/base; exponent=-exponent; } return power1(base,exponent); } public double power1(double b,int e){ if (e==0){ return 1; } double ret=power1(b,e/2); if ((e&1)>0){ //如果是奇数 return ret*ret*b; }else { return ret*ret; } } }
方法2快速幂 +非递归
class Solution { public double Power(double base, int exponent) { if (exponent<0){ base=1/base; exponent=-exponent; } double x=base; double res=1.0 ; while (exponent>0){ if ((exponent&1)>0){ //当前位为1要用 res*=x; } x*=x;//计算下一位 exponent=exponent>>1; } return res; } }