Scheme 取数字的子集,检查它们的总和是否等于方案中的目标和?
我想写一个名为sumToN的函数,它以一个数字列表L和一个目标数字T作为输入,并返回L中的每个数字子集,这些数字的总和正好等于T。这些子集必须按特定顺序返回,如下面的示例所示 e、 g输入萨姆顿6'1 2 3 4 5 e、 g输出2 4 1 5 1 2 3 到目前为止,我有这个Scheme 取数字的子集,检查它们的总和是否等于方案中的目标和?,scheme,lisp,subset,racket,subset-sum,Scheme,Lisp,Subset,Racket,Subset Sum,我想写一个名为sumToN的函数,它以一个数字列表L和一个目标数字T作为输入,并返回L中的每个数字子集,这些数字的总和正好等于T。这些子集必须按特定顺序返回,如下面的示例所示 e、 g输入萨姆顿6'1 2 3 4 5 e、 g输出2 4 1 5 1 2 3 到目前为止,我有这个 (define sumToN (lambda (T L) (cond [(null? L) '() ] [(null? (cdr L))
(define sumToN
(lambda (T L)
(cond
[(null? L) '() ]
[(null? (cdr L)) (checkEqual T (list(car L))) ]
[#t (checkEqual T (+(cadr L)(car L)))]
)
)
)
;; creating helper function called checkEqual
(define checkEqual
(lambda (T L)
(cond
[(equal? T (car L)) (L) ]
[#t '()]
)
)
)
Racket使这变得微不足道: 定义萨姆顿TL 序列->列表 序列过滤器λ组合=应用+组合t 组合 萨姆顿6'1 2 3 4 5;=>1 2 3 2 4 1 5 获得所需的顺序是留给读者的一个练习,特别是因为你没有说什么是顺序规则