Scheme 球拍组合功能

Scheme 球拍组合功能,scheme,racket,Scheme,Racket,我需要一些关于以下用于计算列表组合的代码如何工作的解释 (define combs L k) (cond ((= 0 k) '(())) ((null? L) '()) (else (append (map (λ (x) (cons (car L) x)) (combs (cdr L) (- k 1))) (combs

我需要一些关于以下用于计算列表组合的代码如何工作的解释

(define combs L k)
  (cond ((= 0 k)
         '(()))
        ((null? L)
         '())
        (else
         (append (map (λ (x) (cons (car L) x)) 
                          (combs (cdr L) (- k 1)))
                 (combs (cdr L) k))))))
  • 将列表中的零元素组合为
    ”(())
  • 将空列表中的任何内容组合在一起,得到
    ”()
  • 对于最后一种情况,结果分为两部分:
  • 包含
    (车辆L)
    的组合,以及
  • 不需要的组合
第2项的答案是将
(cdr L)
中的
k
元素组合起来 对于项目1,形成
(cdr L)
k-1
元素的组合,然后将
(car L)
添加到每个元素中