在嵌套列表中输出不同的级别

时间:2014-12-14 08:00:14

标签: scheme racket

快速问题试图在我的考试之前解决这个问题。

如果我有一个嵌套列表,例如

(list 1 (list 2 3 ( list 4 (list 6))))

我如何编写一个只给我最低级别或第三级的函数?

例如,最低级别输出'(6),第3级输出'(4)

我正在辩论可能使用flattem,但后来我不知道水平。

非常感谢任何帮助。

1 个答案:

答案 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