题目描述
给定一个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)