Dar*_*rio 0 recursion haskell memoization
我正在尝试在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
Run Code Online (Sandbox Code Playgroud)
我已经看过memoization,但还没能实现解决方案:
建议?:)
这里有一个很好的解释.
我喜欢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]]
Run Code Online (Sandbox Code Playgroud)