import time def memoize(f): memo = {} def helper(x): if x not in memo: memo[x] = f(x) return memo[x] return helper @memoize def fib(n): if n == 0: return 0 elif n == 1: return 1 else: return fib(n-1) + fib(n-2) def fib_seq(n): res = [] if n > 0: res.extend(fib_seq(n-1)) res.append(fib(n)) return res # 耗时:7.870000000000099e-05 start_using_list = time.perf_counter() fib_seq(30) end_using_list = time.perf_counter() print(f'耗时:{end_using_list-start_using_list}') # def fib(n): # if n == 0: # return 0 # elif n == 1: # return 1 # else: # return fib(n-1) + fib(n-2) # # def fib_seq(n): # res = [] # if n > 0: # res.extend(fib_seq(n-1)) # res.append(fib(n)) # return res # # 耗时:1.2619506 # start_using_list = time.perf_counter() # fib_seq(30) # end_using_list = time.perf_counter() # print(f'耗时:{end_using_list-start_using_list}')