-1

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

1 回答 1

0

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

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

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

于 2015-12-01T14:23:10.713 回答