2016-04-04 12 views
-1

Bir listenin bilgisayar kombinasyonları için aşağıdaki kodun nasıl çalıştığı konusunda bazı açıklamalara ihtiyacım var. bir listeden sıfır elemanları birleştirenRaket kombinasyonları işlevi

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

cevap

0
  • '(()) verir.
  • Boş bir listeden herhangi bir şeyi birleştirmek, '()'u verir.
    1. (car L) ihtiva kombinasyonlar ve
    2. yok kombinasyonları: Nihai durum için
    3. , sonuç iki bölümden oluşur. 2. maddede

cevap sadece (cdr L) den k unsurların kombinasyonları yapmaktır.
Öğe 1 için, (cdr L) öğesinden k - 1 öğelerinin kombinasyonlarını oluşturun ve her birine (car L) ekleyin.