快速幂裸题,按照解析根据自己理解写了一遍快速幂代码,结果很不幸的超时了,看了一下答案,感觉意思是差不多的,但是我写的也太啰嗦了吧呜呜呜
希望大家不要嘲笑我的菜。。。
class Solution {
public:
double myPow(double x, int n) {
if(n==0)return 1;
cout<<n%2<<endl;
if(n<0){
n=-n;
if(n%2==0){
return 1/(myPow(x,n/2)*myPow(x,n/2));
}
return 1/(myPow(x,n/2)*myPow(x,n/2)*x);
}
if(n%2==0){
return myPow(x,n/2)*myPow(x,n/2);
}
return myPow(x,n/2)*myPow(x,n/2)*x;
}
};
官方解答:
太简洁了有木有!!!学到了学到了,学废了学废了……
class Solution {
public:
double quickMul(double x, long long N) {
if (N == 0) {
return 1.0;
}
double y = quickMul(x, N / 2);
return N % 2 == 0 ? y * y : y * y * x;
}
double myPow(double x, int n) {
long long N = n;
return N >= 0 ? quickMul(x, N) : 1.0 / quickMul(x, -N);
}
};