我是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))))
答案 0 :(得分:0)
参考代码,用于查找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))
答案 1 :(得分:0)
我就是这样做的。
(defun countem (aList min max)
(apply #'+ (mapcar (lambda (x) (if (<= min x max) 1 0)) aList)))
我创建了一个1和0的列表,通过在列表上映射匿名函数来告诉元素是否满足约束。
然后我总结一下。
不需要循环或递归。