scheme - 在嵌套列表中,输出不同级别

  显示原文与译文双语对照的内容
0 0

在考试前想出这个问题的快速问题。

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


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

如何编写一个函数,使我只能提供最低级别或者 3rd 级?

例如最低级别将输出 '(6),而 3rd 将输出 '(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

原作者:
...