【问题标题】:calculating catalan numbers using memoization使用记忆计算加泰罗尼亚数字
【发布时间】:2015-11-28 15:49:01
【问题描述】:

我正在尝试使用 memoization 来计算加泰罗尼亚语数字,但它似乎不起作用,我需要更改什么?

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]    

谢谢!

【问题讨论】:

  • “似乎不起作用”不是一个好的问题描述。它有例外吗?它是第一次给出正确答案,然后给出错误答案吗?它是否计算错误的值?等等。

标签: python memoization catalan


【解决方案1】:

如果您在 memo 中的 n 上调用 catalan_mem,则将 memo[n] 替换为 0。这可能不是您想要的。

如果不进一步解析逻辑,这表明 memo[n]=b 应该在 if 块内。

【讨论】:

    猜你喜欢
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多