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

题目描述:

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。


分析:

快速幂,简单解释下,

当e的二进制为1001011,

b^e=b^(1001011)2=b^(1)2*b^(10)2*b^(1000)2*b^(1000000)2


代码:

 1 class Solution {
 2 public:
 3     double Power(double base, int exponent) {
 4         if(base == 0) return 0;
 5         double r = 1;
 6         int e = abs(exponent);
 7         while(e) {
 8             if(e & 1) r *= base;
 9             base *= base;
10             e >>= 1;
11         }
12         return exponent >= 0 ? r : 1 / r;
13     }
14 };
原文地址:https://www.cnblogs.com/jacen789/p/7743244.html