Pow(x, n)
这道题不在于算法有多难,而在于要考虑各种情况的复杂判断,如n等于0,x等于0,x为负时奇偶幂次对正负的影响以及幂次为负时对值的影响,这么多case考虑下来这道题就不是很简单了,下面是自己写的代码,个人感觉写的已经比较干净了,虽然比不过discussion高票的那些
class Solution(object):
def myPow(self, x, n):
"""
:type x: float
:type n: int
:rtype: float
"""
if n == 0:
return float(1)
if x == 0:
return float(0)
sign = True if n > 0 else False
n = abs(n)
result = self.helper(abs(x), n)
if sign:
if x > 0:
return result
return -result if n % 2 else result
if x > 0:
return 1 / result
return -1 / result if n % 2 else 1 / result
def helper(self, value, time):
if time == 0:
return 1
if time == 1:
return value
div, rem = divmod(time, 2)
result = self.helper(value * value, div)
return result * value if rem else result