链接:http://leetcode.com/onlinejudge#question_50
原题:
Implement pow(x, n)
思路:1次、2次、4次、8次这样算上去,其实就是n的二进制表示形式。
当然要小心n是负数和底数是+1 和-1的时候,要优化。
代码:
class Solution {
public:
double pow(double x, int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (x == 1.0)
return 1.0;
else if (x == -1.0)
return n % 2 ? -1 : 1;
double answer = 1.0;
double base = x;
bool negative = n >= 0 ? false : true;
n = abs(n);
while (n) {
if (n & 0x1)
answer *= base;
n = n >> 1;
base = base * base;
}
if (negative)
return 1/answer;
else
return answer;
}
};