题目:实现pow(x,n)。
挺简单的一个题目,有两个注意点:
1、不能直接用循环多次相乘,效率太低。
2、n可能为负数。(第一次提交错误就是这个原因)
下面是提交ac的代码,运行时间4ms:
class Solution {
public:
double myPow(double x, int n) {
double resu;
double temp;
if(n>0)
{
temp=myPow(x,n/2);
if(n%2==0)resu=temp*temp;
else
resu=temp*temp*x;
}
else if(n==0)
return 1;
else
{
temp=myPow(x,-n/2);
if(n%2==0)resu=1/(temp*temp);
else
resu=1.00/(temp*temp*x);
}
return resu;
}
};