相关疑难解决方法(0)

这个斐波那契函数如何记忆?

通过什么机制这个斐波那契函数被记忆了?

fib = (map fib' [0..] !!)                 
     where fib' 1 = 1                                                        
           fib' 2 = 1                                                        
           fib' n = fib (n-2) + fib (n-1)                    
Run Code Online (Sandbox Code Playgroud)

在相关的说明中,为什么这个版本不是?

fib n = (map fib' [0..] !! n)                                               
     where fib' 1 = 1                                                        
           fib' 2 = 1                                                        
           fib' n = fib (n-2) + fib (n-1)                    
Run Code Online (Sandbox Code Playgroud)

haskell memoization fibonacci lazy-evaluation pointfree

111
推荐指数
4
解决办法
8253
查看次数

这个memoized fibonacci函数如何工作?

在我正在进行的功能编程课程的当前练习作业中,我们必须制作一个给定函数的memoized版本.为了解释memoization,给出了以下示例:

fiblist = [ fibm x | x <- [0..]]

fibm 0 = 0
fibm 1 = 1
fibm n = fiblist !! (n-1) + fiblist !! (n-2)
Run Code Online (Sandbox Code Playgroud)

但我不完全了解这是如何工作的.

我们打电话吧fibm 3.

fibm 3
--> fiblist !! 2 + fibList 1
--> [fibm 0, fibm 1, fibm 2] !! 2 + [fibm 0, fibm 1] !! 1
--> fibm 2 + fibm 1
--> (fiblist !! 1 + fiblist 0) + 1
--> ([fibm 0, fibm 1] !! 1 …
Run Code Online (Sandbox Code Playgroud)

haskell memoization fibonacci

8
推荐指数
2
解决办法
936
查看次数