Recursion 使用低级球拍查找列表中长度为K的子集

Recursion 使用低级球拍查找列表中长度为K的子集,recursion,racket,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 ls

我相信我已经阅读了所有关于寻找给定长度子集的帖子。该实现已经用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…))
移动到具有相同map模板的helper函数中,但结果不同


正如我对递归问题的理解一样,我将递归地将第一个元素与列表中的其余元素进行对比的结果附加到n-1中。我同时将它发送到递归,第一个元素不使用到列表的其余部分,使用n。

不要紧,我能够想出如何编写一个助手函数,该函数完成与中间函数相同的工作。快崩溃了!谢谢你的编辑:)你应该回答你自己的问题,并接受答案,这样其他人就可以得到答案。