分析:
快速幂。
11的二进制1011=1+2+8
2^11 = 2(^(1+2+8))=2^1+2^2+2^8
1 public class Solution { 2 public double Power(double base, int exponent) { 3 double num = 1; 4 int flag = 1; 5 if(exponent < 0){ 6 flag = -1; 7 exponent = -exponent; 8 } 9 double nb=base; 10 while(exponent != 0){ 11 //有1的位置,将数值乘到结果中 12 if((exponent&1)==1){ 13 num*=nb; 14 } 15 //下一个位置数值的大小, 16 nb*=nb; 17 exponent>>=1; 18 } 19 if(flag == -1){ 20 return 1/num; 21 } 22 return num; 23 } 24 }
原文:https://www.cnblogs.com/MoonBeautiful/p/13047517.html