fib =
let fib' 0 = 0
fib' 1 = 1
fib' n = fib (n - 1) + fib (n - 2)
in (map fib' [0 ..] !!)
Run Code Online (Sandbox Code Playgroud)
比这更有效:
fib x =
let fib' 0 = 0
fib' 1 = 1
fib' n = fib (n - 1) + fib (n - 2)
in map fib' [0 ..] !! x
Run Code Online (Sandbox Code Playgroud)
因为,"在第二种情况下,fib'是(重新)为每个参数x定义的,因此它不能浮出来."
我不明白这意味着什么.
fib'要为每次调用重新定义fib?haskell ×1