(n not in dic:, insertion dic[n] = return dic[n]). ( dic[n] =, insertion dic[n] = return dic[n]), .
, , - , , , , , .
, memoization , - , , . , , - .
Version1:
def fibo(n, dic={}) :
if n not in dic :
if n in (0,1) :
dic[n] = 1
else :
dic[n] = fibo(n-1)+fibo(n-2)
return dic[ n ]
for i in range(10000):
fibo(i)
Version2:
def fibo(n, dic={}) :
try :
return dic[n]
except :
if n in (0,1) :
dic[n] = 1
else :
dic[n] = fibo(n-1)+fibo(n-2)
return dic[ n ]
for i in range(10000):
fibo(i)
:
C:\Users\Bartek\Documents\Python > python -m timeit - "import version1"
1000000 , 3: 1.64 usec
C:\Users\Bartek\Documents\Python > python -m timeit -" import version2 "
1000000 , 3: 1.6 usec
, , , , .