gpt4 book ai didi

recursion - Erlang:使用递归从列表中选择唯一项

转载 作者:行者123 更新时间:2023-12-03 08:08:13 24 4
gpt4 key购买 nike

给定Erlang中的任何列表,例如:

L = [foo, bar, foo, buzz, foo].

如何使用递归函数仅显示该列表的唯一项?
我不想使用内置函数,例如列表函数之一(如果存在)。

在我的示例中,我想要到达的是一个新列表,例如
SL = [bar, buzz].

我的猜测是,在应用过滤器之前,我会先使用快速排序功能对列表进行排序吗?

任何的意见都将会有帮助。该示例是Cesarini和Thompson出色的“Erlang编程”书第3章中练习的一种变体。

最佳答案

我建议这一点:

unique(L) ->
unique([],L).
unique(R,[]) -> R;
unique(R,[H|T]) ->
case member_remove(H,T,[],true) of
{false,Nt} -> unique(R,Nt);
{true,Nt} -> unique([H|R],Nt)
end.

member_remove(_,[],Res,Bool) -> {Bool,Res};
member_remove(H,[H|T],Res,_) -> member_remove(H,T,Res,false);
member_remove(H,[V|T],Res,Bool) -> member_remove(H,T,[V|Res],Bool).

member_remove函数在一次通过中返回剩余的尾部,而没有检查所有重复出现的元素和测试结果。

关于recursion - Erlang:使用递归从列表中选择唯一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15391740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com