【剑指offer】数值的整数次方 python+C++

237 阅读1分钟

【题目描述】

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 保证base和exponent不同时为0

【思路】

主要是需要考虑两个特殊情况:

1)当指数为负数(此时先按照正数正常计算,最后用1.0除以re即可)

2)当底数为0(先判断底数为0)

【代码】

C++:
class Solution {
public:
    double Power(double base, int exponent) {
        if(base-0.0<0.00001&&base-0.0>-0.00001&&exponent<0){
            return 0.0;
        }
        int absexp=exponent;
        if(exponent<0){
            absexp=-exponent;
        }
        double re=pow(base,absexp);
        if(exponent<0){
            re=1.0/re;
        }
        return re;
    }
    double pow(double base, int exponent){
        double re=1.0;
        for(int i=1;i<=exponent;i++){
            re*=base;
        }
        return re;
    }
};
Python:
# -*- coding:utf-8 -*-
class Solution:
    def Power(self, base, exponent):
        # write code here
        if(base==0.0 and exponent<0):
            return 0.0
        absexp=abs(exponent)
        re=self.pow(base,absexp)
        if exponent<0:
            re=1.0/re
        return re
    def pow(self,base,exponent):
        re=1.0
        for i in range(exponent):
            re*=base
        return re