gpt4 book ai didi

LISP 函数,给定一个数字和一个列表,返回第一个大于 n 的偶数

转载 作者:太空宇宙 更新时间:2023-11-03 18:50:23 25 4
gpt4 key购买 nike

我找不到我的错误。这不断返回 nil:

(even-greater-n 5 '(1 2 3 4 5 6 7))

(defun even-greater-n (n L)
(cond ((null L) nil)
((and (> (car L) n) (evenp n)) (car L))
(t (even-greater-n n (cdr L)))))

最佳答案

你的错误

您正在传递给 evenp n而不是 (car L)

迭代

这相对容易实现,使用 loop :

(defun even-greater (n l)
(loop for k in l
when (and (< n k)
(evenp k))
return k))

(even-greater 5 '(1 2 3 4 5 6 7 8))
==> 6

递归

如果你需要使用递归,你也可以这样做:

(defun even-greater (n l)
(cond ((endp l) nil)
((and (< n (first l))
(evenp (first l)))
(first l))
(t (even-greater n (rest l)))))

(even-greater 3 '(1 2 3 4 5 6 7 8))
==> 4

图书馆

当然,Lisp 有一个非常强大的库,包括 find-if :

(defun even-greater (n l)
(find-if (lambda (k)
(and (< n k)
(evenp k)))
l))

(even-greater 2 '(1 2 3 4 5 6 7 8))
==> 4

关于LISP 函数,给定一个数字和一个列表,返回第一个大于 n 的偶数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47006222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com