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

递归函数未输出计算结果:提取列表子列表首元素失败

递归提取子列表首个元素返回空列表的问题解决

你的问题出在没有将当前提取的元素与递归结果组合起来。Scheme函数会返回最后一个表达式的求值结果,当前代码里(caar graph)只是计算了值但没有保留,每次递归都直接返回(sn-users (cdr graph)),直到触发基准情况返回null,最终整个函数就只返回空列表了。

要解决这个问题,你需要用cons(纯无副作用函数)把当前提取的元素和递归调用的结果拼接成新列表,这样才能逐步构建出目标结果:

(define (sn-users graph)
  (cond
    [(empty? graph) null]
    [else
     (cons (caar graph) (sn-users (cdr graph)))]))

原理很简单:

  • 基准情况:当输入列表为空时,返回空列表作为结果的终止边界
  • 递归情况:用cons把当前子列表的首个元素(caar graph),和剩余列表递归处理的结果拼接在一起,最终就能得到所有子列表首元素组成的完整列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 18:45:00