问题
I am tring to use memoization in order to calculate catalan numbers, but it just does not seem to work, what do I need to change?
def catalan_mem(n, memo = None):
if n==0:
return 1
if memo == None:
memo = {}
b=0
if n not in memo:
for i in range (n):
b+=((catalan_mem(i),memo)[0])*((catalan_mem(n-1-i),memo)[0])
memo[n]=b
return memo[n]
thank you!
回答1:
If you call catalan_mem
on an n
in memo
then you replace memo[n]
with 0. This is probably not what you intend.
Without parsing the logic further, this suggests memo[n]=b
should be inside of the if
block.
来源:https://stackoverflow.com/questions/33973233/calculating-catalan-numbers-using-memoization