我刚刚开始学习方案,我发现 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)。
有什么帮助吗?问题可能出在“(开始”部分),但我无法弄清楚..
谢谢!