數值的整數次方

題目描述

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


class Solution {
public:
    double Power(double base, int exponent) {
        double res = 1;
        int n = exponent;
        //判斷exponent是否爲0和負數
        if(n < 0){
            if(base == 0){
                printf("分母不能爲0");
            }
            n = -n;
        }
        if(n == 0) {
            return 1;
        }
        //循環運算,exponent右移一位,相當於res的平方一次;最後exponent爲1的時候,就是res本身
        while(n != 0){
            if((n & 1) == 1){
                res *= base;
            }
            base *= base;
            n>>=1;
        }
        return exponent > 0 ? res : (1/res);
    }
};

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