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

如何编写Scheme程序实现列表表示的树的叶子节点逆序输出?

问题原因

你代码产生多余嵌套括号的核心问题出在子列表处理分支:当(car givenList)是列表时,你使用(cons (leaves (car givenList)) '())将递归返回的扁平叶子列表额外包裹了一层列表结构,append操作会直接保留这层嵌套,最终输出就会带有多余括号。

修改后的代码

(define (leaves givenList)
  (if (null? givenList) givenList
      (if (list? (car givenList))
          ;; 直接append两个递归返回的扁平列表,无需额外包裹
          (append (leaves (cdr givenList)) (leaves (car givenList)))
          (append (leaves (cdr givenList)) (list (car givenList))))))

验证结果

调用测试用例(leaves '(((1 2) (3 4)) ((1 2) (3 4)))),输出结果为预期的'(4 3 2 1 4 3 2 1)。

内容的提问来源于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:06:02