使用低级别的Racket在列表中查找长度为K的子集

时间:2015-06-23 01:09:19

标签: recursion racket

我相信我已经阅读了有关查找给定长度子集的所有帖子。实现已经在Java,Python,C等中实现。

我在中级

找到了以下针对Racket - 语言级别的代码
(define (comb lst n)
  (cond 
    [(zero? n)'(())]
    [(empty? lst) '()]
    [else
         (append (map (lambda (x) (cons (first lst) x))
                      (comb (rest lst) (- n 1)))
                 (comb (rest lst) n))]
    )
)

这是优雅的代码,但我需要修改上面只使用初学者语言。我被禁止使用长度函数或自己编写。我已经编写了用于生成powerset的初学者代码。我试图将(map (lambda....))移动到具有相同地图模板的辅助函数中,但结果并不相同。

正如我理解递归问题一样,我追加第一个元素与n-1列表的其余部分的结果。我同时将它发送到递归,第一个元素没有与n。

列表的其余部分相连

0 个答案:

没有答案