快速问题试图在我的考试之前解决这个问题。
如果我有一个嵌套列表,例如
(list 1 (list 2 3 ( list 4 (list 6))))
我如何编写一个只给我最低级别或第三级的函数?
例如,最低级别输出'(6)
,第3级输出'(4)
。
我正在辩论可能使用flattem,但后来我不知道水平。
非常感谢任何帮助。
答案 0 :(得分:0)
使用递归下降并将当前级别作为额外参数传递。
(define (collect s-exp level) ...)
1. If s-exp is empty return '()
2. If s-exp is a pair, (cons a d), then
2a. if a is a pair, then recurse on a with an increased level
2b. if level is below 3
3a recurse on a
3b recurse on d
3c. append the results from 3a and 3b
2c if level is 3
4a recurse on d
4b append (list a) with the result from 4a