数值的整数次方
题目描述
实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。
想法
快速幂,不过此时要考虑一下n为负的情况,而且n取反时可能会爆int,同时还可以加两个特判。
代码
class Solution {
public:
double myPow(double x, int n) {
if (x==1) return x;
if (n==0) return 1.0;
long long t=n;
if (n<0) t=-t;
double ret=1.0;
while (t) {
if (t&1) ret*=x;
x*=x;
t>>=1;
}
if (n>=0) return ret;
else return 1.0/ret;
}
};