剑指offer第16题. 数值的整数次方

2020-02-14  本文已影响0人  yousa_

这道题的主要考察点在于你是否细心,全面地考量了输入的情况,同时,对于一些无意义的输出(如0.00001^99999999)你是否能及时终止运算,避免计算的浪费。
下面给出我的解决思路

class Solution:
    def myPow(self, x: float, n: int) -> float:
        if x == 0:  return 0
        if x == 1:  return 1
        if x == -1: return 1 if n%2==0 else -1
        if n < 0:
            tmp = 1
            for i in range(-n):
                tmp *= 1/x
                if tmp == 0.0:  return float('inf') if x>0 else float('-inf')
            return tmp
        if n > 0:
            tmp = 1
            for i in range(n):
                tmp *= x
                if tmp == 0.0:  return 0.0
            return tmp
        if n == 0:  return 1
solution = Solution()
res = solution.myPow(-2.00000, -214999990)
print(res)
上一篇 下一篇

猜你喜欢

热点阅读