【发布时间】:2014-12-08 20:05:14
【问题描述】:
所以正如标题所解释的那样,我可以将每个偶数和奇数转换为它们对应的值,但是在输入数据时我有一个逗号。这会产生额外的L[]。让我向您展示我的预期结果。
预期结果> binariza (L [E 1,L [E 2,E 3],E 4]) => L [E 0,L [E 1,E 0],E 1]
我的结果> binariza (L [E 1,L [E 2,E 3],E 4]) => L [E 0,L [L [E 1,L [E 0,L []]],L [E 1,L []]]]
这是我的代码,有人可以解释一下如何避免每次找到逗号时都将所有内容封装在 L[] 中。
data LA e = L [LA e] | E e deriving Show
binariza :: LA Integer -> LA Integer
binariza (L[]) = L[]
binariza (E num) =
if (even num) then
E 1
else
E 0
binariza (L (x:resto)) =
L [(binariza x), (binariza (L resto))]
注意:我的解决方案必须是递归的。
【问题讨论】:
标签: list haskell recursion tree nested-lists