【发布时间】:2009-09-25 12:50:37
【问题描述】:
我需要创建这个函数flat,它应该从输入列表中重新收缩一个新列表(但在这里,输入列表可以有一个嵌套列表):
例如。 (A (B (C) D) A) 的平面是 (A B C D A)
我的算法如下,不知道对不对:
- 检查列表是否为空:如果不是,继续;如果是,则完成——返回空列表
- 如果列表长度为 1,则完成 -- 返回列表
- 如果列表的长度大于 1,我现在该怎么办? (我可以使用
car和cdr来提取列表,但是在任何一种情况下,我怎样才能使它递归地提取列表到最后,我正在考虑使用append 来重新构建列表。)
任何帮助/提示将不胜感激。
【问题讨论】:
-
如果列表的长度为 1,它仍可能看起来像
((1)),因此必须是flat-tened