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

如何使用cond语句在Scheme中遍历列表并获取最后一个元素?

获取列表最后一个元素的Scheme实现

你可以通过补充cond的分支来实现需求,核心逻辑是递归遍历列表的cdr,直到cdr为空,此时当前列表的car就是最后一个元素。完整代码如下:

(define (last-element lst)
  (cond
    ((null? lst) '())  ; 空列表返回空
    ((null? (cdr lst)) (car lst))  ; 当cdr为空,当前car就是最后一个元素
    (else (last-element (cdr lst)))))  ; 递归处理剩余的cdr部分

关键语法说明:

  • 把参数名从list改成lst,避免和Scheme内置的list函数冲突
  • 新增的第二个cond分支:用(null? (cdr lst))判断当前列表的后续部分是否为空,满足条件时返回(car lst),也就是当前列表的第一个元素(此时它就是整个列表的最后一个元素)
  • else分支里递归调用last-element处理(cdr lst),逐步缩小列表范围,直到触发前两个分支

测试示例:
调用 (last-element '(1 2 3 4)) 会返回 4,传入空列表 () 则返回空列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:15:45