【发布时间】:2019-07-05 09:52:15
【问题描述】:
谁能给我解释一下,为什么下面的代码是备忘录:
fib_mem :: Int -> Integer
fib_mem = (map fib [0..] !!)
where fib 0 = 1
fib 1 = 1
fib n = fib_mem (n-2) + fib_mem (n-1)
【问题讨论】:
-
你是什么意思为什么?!
-
这个函数使用了记忆技术,中间结果被保存起来,以后可以重复使用。
-
还不清楚你在问什么。
-
更简单的定义是
let fib :: Int -> Integer; fib = (fib' !!) where fib' = 1 : 1 : zipWith (+) fib' (tail fib')。 -
这是this question 的副本。由于技术原因,我现在无法将其作为骗子关闭。
标签: haskell