lintcode x的n次冪

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);  
    }
};

点赞