题目来源:https://leetcode-cn.com/problems/powx-n/
实现pow(x,n),即计算 x 的 n 次幂函数。
笔试考到了,那就扩展成大数来做,用快速幂。
思路:
按照这样递归下去就可以得到pow(x,n),再考虑到n有奇偶两种情况:
- n为偶数,那么一直递归即可
- n为奇数,那么递归完还要乘上x本身
class Solution(object):
def myPow(self, x, n):
"""
:type x: float
:type n: int
:rtype: float
"""
def fast_pow(x,n):
if n == 0:
return 1.0
half = fast_pow(x, n//2)
if n % 2 == 0:
return half * half
else:
return half * half * x
if n < 0:
x = 1 / x
n = -n
return fast_pow(x,n)