题目描述:
不使用库函数。
分析:某数的n次方。n可为奇数,n也可为偶数。
目的是要减少计算量!!!
备注:代码中的几个要点:1、如何实现除以2。2、x和n的边界条件:0、负数等
# 使用的是数学公式,剑指offer书P112。
# 使用每次除以2 的方法,减少了非常多的计算量
def mypoww(x,n):
def tem(x,n):
if n == 0: # n=0和n=1两个边界情况
return 1
if n == 1:
return x
result =tem(x,n>>1) # 递归调用; 同时使用右移代替除以2,效率高
result*=result # 此行和余下几行是根据公式写出的
if n&1 == 1: # 如果n是奇数
result*=x
return result
if n>0:
return tem(x,n)
if n == 0: # 考虑n=0和n<0时候的特殊情况
if x == 0:
return 'error'
else:
return tem(x,n)
if n<0:
if x == 0 :
return 'error'
else:
return 1/tem(x,abs(n))
mypoww(0.0001,234543)