相关疑难解决方法(0)

Haskell中的记忆?

关于如何有效地解决Haskell中的以下函数的任何指针,对于大数 (n > 108)

f(n) = max(n, f(n/2) + f(n/3) + f(n/4))
Run Code Online (Sandbox Code Playgroud)

我已经在Haskell中看到了用于解决斐波纳契数的例子,其中涉及计算(懒惰)所有斐波纳契数到所需的n.但在这种情况下,对于给定的n,我们只需要计算很少的中间结果.

谢谢

haskell memoization

128
推荐指数
5
解决办法
2万
查看次数

Levenshtein距离的Haskell尾递归性能问题

我正在玩Haskell 计算Levenshtein距离,并对下面的性能问题感到有点沮丧.如果你为Haskell实现最"正常"的方式,就像下面(dist)一样,一切正常:

dist :: (Ord a) => [a] -> [a] -> Int
dist s1 s2 = ldist s1 s2 (L.length s1, L.length s2)

ldist :: (Ord a) => [a] -> [a] -> (Int, Int) -> Int
ldist _ _ (0, 0) = 0
ldist _ _ (i, 0) = i
ldist _ _ (0, j) = j
ldist s1 s2 (i+1, j+1) = output
  where output | (s1!!(i)) == (s2!!(j)) = ldist s1 s2 (i, j)
               | otherwise …
Run Code Online (Sandbox Code Playgroud)

recursion haskell tail sequencing levenshtein-distance

6
推荐指数
2
解决办法
623
查看次数