【发布时间】:2023-03-11 22:16:01
【问题描述】:
这个斐波那契函数是通过什么机制记忆的?
fib = (map fib' [0..] !!)
where fib' 1 = 1
fib' 2 = 1
fib' n = fib (n-2) + fib (n-1)
在相关的说明中,为什么不是这个版本?
fib n = (map fib' [0..] !! n)
where fib' 1 = 1
fib' 2 = 1
fib' n = fib (n-2) + fib (n-1)
【问题讨论】:
-
有点不相关,
fib 0不会终止:您可能希望fib'的基本情况为fib' 0 = 0和fib' 1 = 1。 -
请注意,第一个版本可以更简洁:
fibs = 1:1:zipWith (+) fibs (tail fibs)和fib = (fibs !!)。
标签: haskell lazy-evaluation fibonacci memoization pointfree