我是Erlang的新手。我一直在对随机的数字列表进行快速排序(我还让它只保留唯一的数字,这样就不会在排序列表中显示重复的数字)。它工作得很好,因为输出给出了排序的数字,没有重复,但是我一直试图让它不仅输出列表,而且输出长度列表,这也是我遇到错误的地方。
length(mod:func).将在erlang中给出列表的长度没有问题,但是在快速排序的递归之后,我无法让它工作。我尝试过分配变量并执行lists:append。我只是不知道我做错了什么。
有人能解释吗?
对不起,我忘了附上下面的代码。这是最基本的快捷键。
-module(list).
-export([sort/0]).
-export([sort/1]).
sort() -> sort([3,3,3,4,1,2,3,2,6,5,9,11,3,10,5]).
sort([]) -> [];
sort([Pivot|Tail]) ->
sort([ X || X <- Tail, X < Pivot]) ++
[Pivot] ++
sort([ X || X <- Tail, X > Pivot]).当我在shell中运行它时,列表是很好的。如果我运行长度函数,它会给出9,这就是我想要的。
55> c(list).
{ok,list}
56> list:sort().
[1,2,3,4,5,6,9,10,11]
57> length(list:sort()).
9但是我试图让它只做list:sort(),然后给出列表和列表的长度。我尝试了很多不同的东西,我试着查找它,但似乎找不到如何将这两个模块结合在一起来工作。它看起来就像长度BIF是非常直接的前向函数,我只是没有使用/使用它的正确方式。这有意义吗?
我想说的是:
55> c(list).
{ok,list}
56> list:sort().
[1,2,3,4,5,6,9,10,11]
The length of the list is 9发布于 2017-03-26 16:43:56
可以使用io:格式/2打印列表长度。只需修改排序/0函数就可以为其添加一行:
sort() ->
Sorted = sort([3,3,3,4,1,2,3,2,6,5,9,11,3,10,5]),
io:format("~p~nThe length of the list is ~w~n", [Sorted, length(Sorted)]).https://stackoverflow.com/questions/43027957
复制相似问题