求x的n次方結果,時間優化
阿新 • • 發佈:2018-12-10
def solve(list,x,n):
if n<0: #判斷負指數
flag=1
else:
flag=0
n=abs(n) #全設為正
i=2 #從list[2]開始計算
exp=1 #前一個數組的指數狀態
if len(list)>=n+1: #若已經計算過,則返回
if flag:
return 1 / list[n]
return list[n]
while True:
if exp*2==n: #若新指數狀態剛好為所求
result=list[i-1]*list[i-1]
if flag:
return 1/result
return result
elif exp*2<n: #若新指數狀態小於所求,則新增新指數結果到末尾
list.append(list[i-1]*list[i-1])
else: #若新指數超過所求,則指數分解
result=list [i-1]*solve(list,x,n-exp)
if flag:
return 1 / result
return result
i=i+1
exp=exp*2
x=3
n=-1
list=[]
list.append(1)
list.append(x)
result=solve(list,x,n)
print(result)