1

可能重复:
仅使用“The Little Schemer”中的表格来展平列表

我只是想将 '(ab (cd) e) 变成 '(abcde) (即,将内部列表的每个成员插入外部列表,同时保持元素的顺序)。

必须有一种简单的方法来做到这一点,但由于某种原因它使我无法理解。

4

1 回答 1

0

你看到'(ab (cd) e) 是一棵树,不是吗?就像是

a---b
|\--c--d
 \--e 

在这种表示中,节点是列表,叶子是符号。你可以做什么,它打印树的所有叶子:

  1. 如果树为空(= 是空列表),则停止
  2. 如果树不为空,则
    1. 如果树的 CAR 是符号,打印它,然后处理树的 CDR
    2. 如果树的 CAR 是一个列表,则处理树的 CAR,然后处理树的 CDR

完成此操作后,您将用“将值放在某处”替换“打印”。希望这能引导你达到你想要的。

于 2012-09-28T01:47:53.037 回答