题目描述:
给定一个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 };