IT虾米网

算法-数值的整数次方详解

luoye 2018年10月18日 编程语言 430 0
/*
	[数值的整数次方]
        
    [题目]
	给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

    [解析]
    主要是要注意边界条件的处理。
*/

#include <vector>
#include <algorithm>
#include <iostream>
#include <limits>

using namespace std;

class Solution{
public:
    double Power(double base, int exponent) {
        // special case
        if(base == 0 && exponent == 0)
            return 0;
        if(base == 0 && exponent < 0 )
            return numeric_limits<int>::max();

        double ans = PowerPositive(base, abs(exponent));
        if(exponent < 0)
            ans = 1.0/ans;
        return ans;
    }

    double PowerPositive(double base, int exponent){
        if(exponent == 0)
            return 1;
        if(exponent == 1)
            return base;

        double temp = PowerPositive(base, exponent/2);
        if((exponent & 1) == 1){
            return temp*temp*base;
        }else{
            return temp*temp;
        }
    }
};

int main()
{
    return 0;
}


发布评论

分享到:

IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

算法-栈的压入、弹出序列详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。