相关疑难解决方法(0)

为什么这个递归缓慢?

我正在努力解决这个问题:

只使用1c,5c,10c,25c或50c硬币获得50美元的方式有多少?

这是我的代码:

main = print $ coinCombinations [1,5,10,25,50] !! 5000

coinCombinations coins = foldr recurse (1 : repeat 0) coins
  where recurse a xs = take a xs ++ zipWith (+) (drop a xs) (recurse a xs)
Run Code Online (Sandbox Code Playgroud)

事实证明,我的recurse功能很慢,可能是二次或更差.但我不明白为什么,因为它看起来类似于斐波纳契列表

fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
Run Code Online (Sandbox Code Playgroud)

recursion haskell

5
推荐指数
1
解决办法
153
查看次数

标签 统计

haskell ×1

recursion ×1