我相信我已经阅读了有关查找给定长度子集的所有帖子。实现已经在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。
列表的其余部分相连