剑指offer(python)-题目12-求次方

题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

思路:

这道题看似简单,其实BUG重重。要注意的问题:

1 关于次幂的问题特殊的情况,比如次幂为负数,或者基数为0时等等复杂的情况
2. 机器中浮点数的比较是由误差的,因此double类型的比较,不能用简单的a==0来比较。一般的比较方式是,相减的差在一个很小的区间内,我们就认为是相等的。

思路:首先考虑base在-0.00001到0.00001之间的数,其接近于0,所以其指数次输出为0,对于指数为0的任意非0数结果为1,对于指数幂为1的任意数结果为base本身,对于其他的base值,当指数为正数时,直接相乘即可,对于指数为负数时,先将其转换为正的指数,相乘的结果再取倒数即可。
即分情况讨论即可

# -*- coding:utf-8 -*-
class Solution:
    def Power(self, base, exponent):
        if base==0:
            return 0
        elif exponent==0:
            return 1
        elif exponent==1:
            return base
        else:
            return pow(base,exponent)

猜你喜欢

转载自blog.csdn.net/qq_24429333/article/details/87864963