LeetCode學習筆記
阿新 • • 發佈:2020-07-06
1.遞迴
#1.斐波那契(1,1,2,3,5,8,...前兩項之和是後一項),遞迴問題(呼叫自身,結束條件) #一 。時間複雜度2**n,即n+1,時間複雜度翻一倍 def fibnacci(n): if n==0 or n==1: return 1 #結束條件 else: return fibnacci(n-1)+fibnacci(n-2)#前兩項和,呼叫自身 @cal_time#遞迴函式不能直接用裝飾器 def fib1(n): return fibnacci(n) #二。時間複雜度n,空間複雜度n, @cal_time def fib2(n): li=[1,1] for i in range(2,n+1): li.append(li[-1]+li[-2]) return li[n] #三。時間複雜度n def fib3(n): a=1 b=1 c=1 for i in range(2,n+1): c=a+b a=b b=c return c print(fib1(33)) #時間裝飾器 import time def cal_time(func): def wrapper(*args,**kwargs): t1=time.time() result=func(*args,**kwargs) t2=time.time() print("%s running time:%s secs."%(func.__name__,t2-t1)) return result return wrapper