球拍组合功能
Racket combinations function
我需要一些关于以下用于计算列表组合的代码如何工作的解释。
(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))))))
- 组合列表中的零个元素得到
'(())
。
- 组合空列表中的任何内容得到
'()
.
- 对于最后一个案例,结果分为两部分:
- 包含
(car L)
和 的组合
- 没有的组合。
第 2 项的答案是仅组合 (cdr L)
个中的 k
个元素。
对于第 1 项,从 (cdr L)
中形成 k - 1
个元素的组合,然后将 (car L)
添加到每个元素。
我需要一些关于以下用于计算列表组合的代码如何工作的解释。
(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))))))
- 组合列表中的零个元素得到
'(())
。 - 组合空列表中的任何内容得到
'()
. - 对于最后一个案例,结果分为两部分:
- 包含
(car L)
和 的组合
- 没有的组合。
- 包含
第 2 项的答案是仅组合 (cdr L)
个中的 k
个元素。
对于第 1 项,从 (cdr L)
中形成 k - 1
个元素的组合,然后将 (car L)
添加到每个元素。