calculating catalan numbers using memoization

馋奶兔 提交于 2019-12-12 06:57:44

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!