我需要指导如何在我的Haskell代码中完美反转。 我的代码:
input :: Int -> [Int]
input x = check_1 x
check_1 x = check_2 (case x of
0 -> []
x -> check_1 (x`div`10) ++ [x`mod`10])
check_2 x = reverse x
我的输出:
Prelude -> input 12345
Prelude -> [5,3,1,2,4]
我想要的:
Prelude -> input 12345
Prelude -> [5,4,3,2,1]
请协助我调用check_2函数是一种更好的方法来反转列表。感谢
答案 0 :(得分:4)
问题是你在每个添加的项目之后正在反转列表,所以它最终会混乱。添加完所有项目后,您想要反转一次。您可以通过删除$(document).ready()
并将check_2
更改为:
input
然而,在这种情况下更好的解决方案是根本不反转,而是首先以正确的顺序创建列表:如果你改变
input x = reverse $ check x
到
check_1 (x`div`10) ++ [x`mod`10])
它不仅会更有效率,因为你摆脱了x `mod` 10 : check_1 (x `div` 10)
,但列表也将从一开始就按相反的顺序排列。