算法-数值的整数次方详解编程语言

/*
	[数值的整数次方]
        
    [题目]
	给定一个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;
}

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/15316.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论