使用memoization计算加泰罗尼亚语数字

时间:2015-12-01 14:16:06

标签: python python-2.7 recursion memoization catalan

我正在尝试使用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] 

1 个答案:

答案 0 :(得分:0)

您需要将缓存传递给递归调用:

sum = sum + catalan_mem(i, mem) * catalan_mem(n-i-1, mem)

否则,每个方法调用都会创建一个新的空缓存。