c:: Integer -> Integer
c n | n < 3 = n + 100
| otherwise = c (n-2) + c (n-3) + c (n-2)
这种形式的c的复杂性是指数的。重写函数c,使其复杂度呈线性。
如果1000
答案 0 :(得分:6)
import Data.MemoCombinators
c:: Integer -> Integer
c n | n < 3 = n + 100
| otherwise = c' (n-2) + c' (n-3) + c' (n-2)
c' = integral c
main = print $ c' 1000
请注意c
如何重新编写c'
来调用c
的备忘版本。