1. 程式人生 > >數值的整數次方(快速冪)

數值的整數次方(快速冪)

題目描述

給定一個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。

注意題目也可能出更大的數,最好使用longlong來存,有時候也會將結果mod一個值

class Solution {
public:
    double Power(double base, int exponent) {
        double res = 1.0;
        int judge = exponent;
        if(judge == 0)
            return 1.0;
        if(exponent < 0)
            exponent = (~exponent) + 1;//* -1
        double curr = base;
        while(exponent != 0)
        {
            if((exponent & 1) == 1)
                res *= curr;
            curr *= curr;
            exponent >>= 1;
        }
        //當judge<0時,還需再次判斷res是否等於0,等於0則丟擲異常。這裡沒有做判斷
        return judge < 0? 1 / res : res;
    }
};