我有这种记忆技术来减少获取斐波那契序列号的调用次数:
def fastFib(n, memo):
global numCalls
numCalls += 1
print 'fib1 called with', n
if not n in memo:
memo[n] = fastFib(n-1, memo) + fastFib(n-2, memo)
return memo[n]
def fib1(n):
memo = {0:1, 1:1}
return fastFib(n, memo)
numCalls = 0
n = 6
res = fib1(n)
print 'fib of', n,'=', res, 'numCalls = ', numCalls
Run Code Online (Sandbox Code Playgroud)
但我被困在这里:memo[n] = fastFib(n-1, memo) + fastFib(n-2, memo)和这里memo = {0:1, 1:1}。每次我想获得一个号码的 fib 时,它是如何准确减少呼叫次数的?