题目:
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,x^n)。不得使用库函数,同时不需要考虑大数问题。
解析:首先排除x**n;
快速幂法(二进制角度分析)
利用十进制数字 nn 的二进制表示,可对快速幂进行数学化解释。
通过二进制方式递进判断每位是否需要进行乘法。
代码:
class Solution(object):
def get_n(self, x , n):
if x == 0:return 0
fu_flag = 0
if x < 0:x , fu_flag = -x ,1
if n ==0 : return 1
elif n ==1:return x
res = 1
while n:
if n&1:res *= x
x *= x
n = n>>1
if fu_flag != 0: res = -res
return res
x = 3.0
n = 15
f = Solution()
y = f.get_n(x , n)
print('y = ',y)
print('true = ',x ** n)
输出:
y = 14348907.0
true = 14348907.0