lisp - 通用 Lisp 编程

标签 lisp

我是 lisp 语言的新手。仅仅 3 天。 我有一项任务,在编写代码方面需要帮助。

编写一个接受三个参数的 Lisp 函数:一个称为 aList 的整数列表、一个称为 min 的整数和一个称为 max 的整数。该函数返回 aList 中落在 min <= x <=max 范围内的元素数,其中 x 是 aList 的元素。如果 aList 为空,则该函数应返回 0。

这样做正确吗?

(defun countem(aList min max)
  (if (> min max) 
      (cons min (aList (add1 min) max))))

最佳答案

  1. 安装 sbcl
  2. 在 REPL 中输入您的代码并试一试

引用代码查找 aList 中落在 min <= x <=max 范围内的元素数:

(defun countem-1 (aList min max)
       (let ((count 0))
         (dolist (el aList)
           (if (and (>= el min) (<= el max))
               (setf count (1+ count))))
         (print count)))

或者你的意思是递归方式:

(defvar count 0)
(defun countem-2 (aList min max)
       (if (<= min max)
           (progn
             (setf count (1+ count))
             (countem-2 aList (1+ min) max))
           (print count))

关于lisp - 通用 Lisp 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23282637/

相关文章:

lisp - 如何在 Common Lisp 中递增或递减一个数字?

security - Lisp 应用程序和网络应用程序是否需要特殊的输入清理?

javascript - 如何配置 emacs 以编辑包含 Javascript 的 HTML 文件?

lisp - 确定搜索元素的级别

LISP 合并两个整数列表并按升序对它们进行排序?

lisp 从另一个列表中删除一个列表的内容

lisp - CLisp 错误 : "(x) is not number"

方案 : recursive process much faster than iterative

list - 在 LISP 中实现基本库函数(手动)

exception - 如何在 block 内临时定义条件?