java简单快速幂

2018/03/06 18:13
阅读数 7
 * 1.写出指数的二进制表达,例如13表达为二进制1101。
  * 2.举例:10^1101 = 10^0001*10^0100*10^1000。
  * 3.通过&1和>>1来逐位读取1101,为1时将该位代表的乘数累乘到最终结果。
                      
class Solution {
public :
     double Power( double base,  int exponent) {
         long long p =  abs (( long long )exponent);
       double r = 1.0;
         while (p){
             if (p & 1) r *= base;
             base *= base;
             p >>= 1;
         }
         return exponent < 0 ? 1/ r : r;
     }
};
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部