LeetCode:Pow(x, n)

題目連接html

Implement pow(x, n).函數

 

主要利用x^2n = (x^n)*(x^n),  x^2n+1 = (x^n)*(x^n)*xcode

注意n是負數,對其取反時,可能會溢出htm

其實0^0(都是整數)是未定義的,由於0^0 = 0^1 / 0^1 = 0 / 0, 0做爲除數是未定義的,能夠參考維基百科blog

可是庫函數pow(0.0,0) = 1,下面咱們也這麼處理。                          本文地址ip

若是x是無窮大(即x = numeric_limits<double>::infinity()),若是n>0,返回無窮大,若是n == 0返回1,若是n<0,返回負無窮-numeric_limits<double>::infinity()。(1/0.0 不會出現運行錯誤,結果是正無窮)leetcode

 

class Solution {
public:
    double pow(double x, int n) {
        //基數爲1,-1, 0,能夠特殊處理
        //if(x == 1)return 1.0;
        //else if(x == -1)return n%2 ? -1.0 : 1.0;
        //else if(x == 0)return 0.0;
        double res = 1.0;
        //使用long long主要防止n = -2147483648時,取反溢出
        long long nn = n;
        if(nn < 0)
            nn = -nn;
        while(nn != 0)
        {
            if(nn & 1)
                res *= x;
            nn >>= 1;
            x *= x;
        }
        if(n > 0)
            return res;
        else return 1/res;
    }
};

 

【版權聲明】轉載請註明出處:http://www.cnblogs.com/TenosDoIt/p/3802902.htmlget

相關文章
相關標籤/搜索