我正在尝试使用memoization来计算加泰罗尼亚语数字,但它似乎不起作用,我需要改变什么?
def catalan_mem(n, mem = None):
if n==0:
return 1
if mem==None:
mem={}
sum=0
if n not in mem:
for i in range(0, n):
sum = sum + catalan_mem(i) * catalan_mem(n-i-1)
mem[n]=sum
return mem[n]
答案 0 :(得分:0)
您需要将缓存传递给递归调用:
sum = sum + catalan_mem(i, mem) * catalan_mem(n-i-1, mem)
否则,每个方法调用都会创建一个新的空缓存。