计算列表中的数字

Mom*_*med 1 lisp common-lisp

是否有人可以帮助我在共同的LISP中编写一个函数来计算列表中的数字?我写的代码如下,但它不起作用!

(defun count-numbers(lst)
    (let(result()))
    (dolist(number lst)
    (push number result))
    (length result))
Run Code Online (Sandbox Code Playgroud)

例如,当我输入此查询时"(count'(r 4 f d w 2 3 4 1 z))",我必须得到5.

Hai*_*ile 5

既然是家庭作业,我只想指点一下.第一:简单.如果您是Common-Lisp的新手,只需使用其基本功能即可.例如:递归.纯粹的功能风格.想想这样的事情:

(defun count (list counter) 
    ;; something
)
Run Code Online (Sandbox Code Playgroud)

我们先检查清单.如果它是空的,我们已经检查了所有元素,所以我们返回计数器.如果列表不为空,我们

  1. 采取它的第一个元素
  2. 我们检查一下它是否是一个数字
  3. 这是一个数字!我们以递归方式对列表的其余部分调用count,并使用counter = counter + 1
  4. 这不是一个数字!我们递归调用在列表的其余部分与计数器和以前一样

使用(numberp n).如果n是数字,则返回T,否则返回NIL.