2016-04-04 75 views
-1

我需要一些關於如何計算列表組合的代碼的解釋。球拍組合功能

(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)))))) 

回答

0
  • 從列表結合零個元素給出'(())
  • 結合空列表中的任何內容給出'()
  • 對於最終的情況下,結果有兩個部分:
    1. 包含(car L)的組合,和
    2. 沒有的組合。

答案的第2項是剛剛從(cdr L)使k元素的組合。
對於第1項,從(cdr L)組成k - 1元素的組合,然後將(car L)添加到每個元素中。