【问题标题】:Haskell Data StructureHaskell 数据结构
【发布时间】:2014-05-13 11:19:53
【问题描述】:

我正在尝试在 Haskell 中构建一个数据结构,可以使用它来避免重新计算值。例如,假设我有这个功能:

f :: Int -> Int -> Int
f 1 1 == 1
f m n
    | abs m > n = 0
    | OTHERWISE if value of f m n has already been computed by another recursive branch, return that value and add it to the "database"
    | OTHERWISE return f (m-1) (n-1) + f (m - 1) n

我已经看过 memoization,但还没有实现解决方案:\

建议? :)

【问题讨论】:

    标签: haskell recursion memoization


    【解决方案1】:

    一个很好的解释是here

    我喜欢memoize 包:)

    例子(解决“一只青蛙正在跳楼梯……”问题):

    import Data.Function.Memoize 
    
    ladder :: Integer -> Integer -> Integer 
    ladder n k = g n 
      where g = memoize f 
            f 0 = 1 
            f x = sum [g (x - y) | y <- [1..if x < k then x else k]] 
    

    【讨论】:

    • 嗨@josesuan,谢谢,不幸的是这是我的问题,我遇到过类似的例子,但很难理解它是如何工作的。 (特别是最后一行)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 2015-08-12
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    相关资源
    最近更新 更多