x的n次冪
實現 pow(x,n)
注意事項
不用擔心精度,當答案和標準輸出差絕對值小於1e-3
時都算正確
您在真實的面試中是否遇到過這個題? Yes
樣例
Pow(2.1, 3) = 9.261
Pow(0, 1) = 0
Pow(1, 0) = 1
O(logn) time
標籤 分析:這道的考點在怎麼減少計算次數,比如2的5次方,用循環把2乘5次當然可以解決問題,但是速度變慢了。針對這道題就可以用偶數兩兩相乘,時間複雜度變O(logn)
遞歸法:
class Solution {
public:
/*
* @param x: the base number
* @param n: the power number
* @return: the result
*/
double createPow(double x,int n){
if(n==1)
return x;
double temp=createPow(x,n/2);
if(n&1) //爲奇數則多成一個x
return (temp*temp)*x;
else
return (temp*temp);
}
double myPow(double x, int n) {
// write your code here
double tmp=x;
if(n==0)
return 1;
if(n>32||n<-32)
return 0.0;
if(n<0)
return 1/createPow(x,-n);
else
return createPow(x,n);
}
};