【发布时间】:2018-07-03 03:37:02
【问题描述】:
我已经有以下功能
toBin, auxBin :: Integer -> [Integer]
toBin 0 = [0]
toBin n = reverse (auxBin n)
auxBin 0 = []
auxBin n = n `mod` 2 : auxBin (n `div` 2)
fib :: Int -> Integer
fib n = fibs !! n
where
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
fibonacci = [fib n | n <- [0..]]
但是当我用toBin 函数映射斐波那契列表时,我得到了一个错误的列表:
因为,我得到了这个:
[[0],[1],[1],[1,0],[1,1],[1,0,1],[1,0,0,0],[1,1,0,1],[1,0,1,0,1],[1,0,0,0,1,0]]
但是,我想要这个:
[0,1,10,101,1010,10101,101010,1010101,10101010,101010101]
你能帮帮我吗?
【问题讨论】:
-
目前还不清楚您期望的结果类型是什么。它应该是一个字符串列表吗?
-
你想要的列表与斐波那契数有什么关系?
-
顺便说一句,为了提高效率,删除带有索引访问的
fib函数,只需使用fibonacci = fibs -
两个列表不匹配...
-
第一个列表实际上语义正确,最后一个不正确,您只需将右端的一个零和一个移到二进制表示中。跨度>
标签: haskell functional-programming fibonacci