You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何定义Scheme过程输入集合生成指定顺序的所有子集列表

调整方案

你现有的实现逻辑是先生成所有不含当前首元素的子集,再追加所有添加了首元素的子集,和你需要的输出顺序逻辑不符,只需要修改子集合并逻辑即可:将原本的两段式追加改为每对(含首元素的子集、原子集)按顺序拼接,用append-map实现即可。

修改后的完整代码如下:

(define (subsets givenList)
  (if (null? givenList)
      (list null)
      (let ((rest (subsets (cdr givenList))))
        (append-map (lambda (x)
                      (list (cons (car givenList) x)
                            x))
                    rest))))

调用(subsets '(a b c ))即可直接得到你要求的结果:'((a b c) (b c) (a c) (c) (a b) (b) (a) ())。


内容的提问来源于stack exchange,提问作者Jackscalibur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 04:21:02