2016-04-04 18 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. ない組合せ:最後のケースについて
    3. は、結果は、2つの部分を有しています。

項目2のための答えはちょうど(cdr L)からk要素の組み合わせを作ることです。
項目1については、(cdr L)からk - 1の要素の組み合わせを作成し、それぞれに(car L)を追加します。