Python 用记忆法计算加泰罗尼亚数字
我试图用记忆来计算加泰罗尼亚的数字,但它似乎不起作用,我需要改变什么Python 用记忆法计算加泰罗尼亚数字,python,python-2.7,recursion,memoization,catalan,Python,Python 2.7,Recursion,Memoization,Catalan,我试图用记忆来计算加泰罗尼亚的数字,但它似乎不起作用,我需要改变什么 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)
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]
您需要将缓存传递给递归调用:
sum = sum + catalan_mem(i, mem) * catalan_mem(n-i-1, mem)
否则,每个方法调用都会创建一个新的空缓存。将
mem
作为参数传递给递归调用,或将mem
定义为全局