【发布时间】:2014-06-06 12:21:57
【问题描述】:
在构建自己的记忆表失败后,我转向该类并尝试使用它来加速斐波那契数列的双递归定义:
fib :: Int -> Int
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
我尝试过以多种方式使用该类的 memoize 函数,但即使是下面的构造似乎也一样慢(在 fib 33 吃了 10 秒):
fib :: Int -> Int
fib 0 = 0
fib 1 = 1
fib n = memoize fib (n-1) + memoize fib (n-2)
fib' :: Int -> Int
fib' n = memoize fib n
我尝试过以其他方式分发memoize,但性能似乎没有提高。
我知道还有其他方法可以更有效地计算这个问题,但是对于我原来的问题,我想使用 Memoize 包。所以我的问题是,如何使用这个包中的memoize 函数提高性能?
【问题讨论】:
标签: haskell fibonacci memoization