【发布时间】:2012-03-09 19:53:31
【问题描述】:
我正在做 Erlang Programming 中的练习。
问题是
编写一个函数,给定一个嵌套列表,将返回一个平面列表。
示例:
flatten([[1,[2,[3],[]]], [[[4]]], [5,6]]) ⇒ [1,2,3,4,5,6].提示:使用
concatenate解决flatten。
这是我的concatenate 函数
%% concatenate([[1,2,3], [], [4, five]]) ⇒ [1,2,3,4,five].
concatenate([X|Xs]) -> concat(X, Xs, []).
concat([X|Xs], T, L) -> concat(Xs, T, [X|L]);
concat([], [X|Xs], L) -> concat(X, Xs, L);
concat([], [], L) -> reverse(L).
我真的很想知道一种优雅的方式来实现flatten。我花了几个小时来解决这个练习。
更新:我忘记了最重要的先决条件。是否可以仅通过递归和模式匹配来解决这个问题?
【问题讨论】: