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

如何在LISP中编写统计给定参数中0的个数的函数

LISP 统计列表中0出现次数的函数实现

最简实现

直接调用Common Lisp内置的序列统计函数count即可,代码如下:

(defun count_number_of_0 (lst)
  (count 0 lst))

测试调用:

(count_number_of_0 '(1 0 5 9 0 0 0 7 1 0))

返回结果:5,完全匹配预期输出。


手写递归实现(无内置函数依赖)

如果要手动实现遍历逻辑,可以用递归逐元素判断,逻辑非常直观:

  • 空列表没有任何元素,0的个数为0,作为递归终止条件
  • 列表首元素等于0时,计数+1,再递归统计列表剩余部分
  • 列表首元素不等于0时,直接递归统计列表剩余部分

对应代码:

(defun count_number_of_0 (lst)
  (cond
    ((null lst) 0)
    ((eql (car lst) 0) (1+ (count_number_of_0 (cdr lst))))
    (t (count_number_of_0 (cdr lst)))))

注意:这里用eql做相等判断,针对整数0的比较场景效率和准确性都最优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:15:41