recursion - lisp 中的递归列表函数,用于查找列表中出现的次数

标签 recursion lisp common-lisp

;问题3

(defun listcheck(lst)
  (cond
   ((not (null lst))
    (cond
     ((eq (car lst) 'a) (+ (listcheck (cdr lst)) 1))
     ( T (listcheck (cdr lst)))
     )
    )
   )
  0
  )

此函数始终打印出 0 不确定我哪里出错了任何输入都会有帮助

最佳答案

它正在打印 0,因为函数以 0 结束,在 cond 之外。所以它在所有情况下都会返回 this,而不仅仅是递归的基础。仅当 lst 为 null 时才应返回。

(defun listcheck(lst)
  (cond ((null lst) 0)
        ((eq (car lst) 'a) (+ (listcheck (cdr lst)) 1))
        (T (listcheck (cdr lst)))))

关于recursion - lisp 中的递归列表函数,用于查找列表中出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34686431/

相关文章:

recursion - 我怎样才能避免 Prolog 递归中的这个陷阱?

java - 使用递归方法实现二叉树

lisp - Common Lisp 中的矩阵乘法

functional-programming - 如何用类似 lisp 的语言分解几何图形构建?

lisp - 如何存储lispbuilder-sdl :colors in a list?

lisp 高效的线性代数库

c# - 为列表中的每个项目设置权重

java - 递归使用多少堆栈(从列表中删除节点)?

lisp - Lisp 示例冗余之地?

lisp - 为什么SBCL会这样打印Sublis?