50. Pow(x, n)
Implement pow(x, n).
很好的题,让我对库函数的实现有了新的认识,原来他的实现与你想的并不一样,还是要多读书。
1、快速找到与结果接近的值;
2、进入递归;
3、符号的处理,以后一定要注意!!!
class Solution {
public:
double myPow(double x, int n) {
if(!n) return 1.0L;
int sign=n<0?-1:1;
n=n<0?-n:n;
unsigned int pren{1},curn{1};
double res{x},preRes{x};//{1}会出现编译错误,精度不匹配
while(curn<n)
{
preRes=res;
res*=res;
pren=curn;
curn<<=1;//<<=!!!
}
preRes*=myPow(x,n-pren);//递归要比一个一个往上乘要快
if(sign<0) return 1/preRes;
else return preRes;
}
};