0

我刚刚开始学习方案,我发现 cons-cdr 部分有点难以理解。我正在制作一个函数,它需要一个列表,然后显示该列表中的所有原子,包括子列表中的所有原子,就好像它是一个大列表一样。它看起来像这样: (flatten '(1 (2 3) 4 5 (6 7)))

(1 2 3 4 5 6 7)

这是我的代码:

(define (flatten list1)
    (if (not (empty? list1))
     (if (atom? (car list1))
     (cons (car list1)(flatten (cdr list1)))
     (begin
     (flatten (car list1))
     (flatten (cdr list1))))
     '()))

但是,这样做时,它会删除子列表。所以 (flatten '((1 2) 3 4) 会给出 (3 4) 而不是 (1 2 3 4)。

有什么帮助吗?问题可能出在“(开始”部分),但我无法弄清楚..

谢谢!

4

1 回答 1

0

在你的begin街区尝试这样的事情

(append (flatten (car aList)) (flatten (cdr aList)))

如果不一样,帖子也几乎是相同的问题: flatten list

于 2016-10-24T12:51:21.507 回答