【发布时间】:2016-05-19 02:48:08
【问题描述】:
我正在编写一个程序,计算两个变量的 Pascal 标识,硬编码到程序中,因为我是 Python 新手并尝试缓存和记忆。这是我到目前为止所拥有的:
counter = 0
call_cacheK = {}
def callTest(n, k):
global counter
if n in call_cacheK:
return call_cacheK[n]
if k == 0:
return 1
elif k == n:
return 1
elif (1 <= k) and (k <= (n-1)):
counter += 1
#call_cacheK[n] = result
result = ((callTest(n-1, k) + callTest(n-1, k-1)))
print(result)
return result
callTest(20, 11)
#167,960
我的函数将输出最终的真实答案,但会输出很多答案。我似乎不知道如何正确存储要在缓存中使用的值。
如何正确使用call_cacheK来存储我已经使用过的result值?
谢谢。
【问题讨论】:
-
记忆化的规范方法是使用装饰器,我建议你研究一下。至于这一点,您似乎没有尝试将任何内容放入缓存中。
标签: python caching memoization