我是 Common Lisp 和函数式编程的新手,但我在 C、C++、C#、Java 等语言方面拥有丰富的经验。我无法在列表中找到最嵌套的列表。我的输入是这样的:
(0 1 (2 3) 4 (5 (6 (7) 8)) 9)
我想得到这个列表中最嵌套的列表,在这种情况下是
(7)
我确实有一个想法,我可以以某种方式展平列表,直到只剩下一个子列表。为了说明我的意思,这里有几个步骤:
第 1 步 - 输入:
(0 1 (2 3) 4 (5 (6 (7) 8)) 9)
第 2 步 - 在“第一层”上展平:
(0 1 2 3 4 5 (6 (7) 8) 9)
第 3 步 - 在“第二级”上展平:
(0 1 2 3 4 5 6 (7) 8 9)
现在只剩下一个嵌套列表,这意味着这是嵌套最多的列表。但是我在这里看到了一个问题,当出现两个或更多这样的列表时。请分享您对此的看法。
我在将这个过程在 Common Lisp 中变为现实时遇到了问题,所以我会很感激一些正确方向的指针,也许是一些示例代码等等。这是一个家庭作业,所以我并不期待一个完整的解决方案,但如果有人指出一个更简单、更好的解决方案及其实施,我会很高兴。