【问题标题】:recursive list function in lisp that finds number of times a was present in listlisp 中的递归列表函数,用于查找 a 在列表中出现的次数
【发布时间】:2016-01-08 21:31:51
【问题描述】:

;问题3

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

这个函数总是打印出 0 不确定我哪里出错了任何输入都会有帮助

【问题讨论】:

  • 因为它以0结尾。
  • 请不要破坏您的问题或对其答案进行破坏建议的编辑。

标签: recursion lisp common-lisp


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-07-26
    • 2021-11-28
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 2018-05-08
    相关资源
    最近更新 更多