1. 程式人生 > >求x的n次方結果,時間優化

求x的n次方結果,時間優化

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)