Pow(x,n)

class Solution {
    public double myPow(double x, int n) {
        boolean tag = false;
        double result = 1;
        if (n == 0){
            return 1d;
        }
        if (n < 0){
            tag = true;
            n = -n;
        }
        for (int i = n; i != 0; i /= 2) {
            if (i % 2 != 0){
                result *= x;
            }
            x *= x;
        }
        if (tag){
            return 1/result;
        }else {
            return result;
        }
    }
}

因爲n可能特別大,所以採用折半計算:

如果n爲偶數,那麼每次循環計算x的平方即可,最後一次循環i=1,result *= x得到結果

如果n爲奇數,那麼先乘一個x,然後n/2爲偶數,過程同上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章