double myPow(double x, long n) {
long temp = n;
if((x <= -100.0)&&(x >= 100)) return 0;
if((temp<INT_MIN)||(temp>INT_MAX)) return 0;//
if(temp<0)
{
x = 1.0/x;
temp = 0 - temp;
}
if(temp == 0)
return 1.0;
if(temp%2)
return x*myPow(x,temp-1);
return myPow(x*x,temp/2);//这里用到二分,使得递归次数减少,明显提高速度
}
注意:
int 如果是4个字节=8位,范围(-2^31~2^31-1)。
题中要求 [-2^31~2^31-1],因此用int无法表示,用long
(有更好的方法,欢迎评论区下方评论)