我想不出一种方法来搜索列表以确保它具有所有整数。如果有非整数数据,我想立即返回nil
,如果没有,则继续我的功能。在列表中搜索整数(Lisp)
我试图做的递归函数将会是cons
,car
与cdr
的列表。随着我的尝试,我无法返回nil
。我只能忽略非整数数据。例如,(add-1-all '(1 2 3 a))
将在每个数字加1后返回(2 3 4)
。
(defun add-1-all (L)
(if (null L)
L
(if (integerp (car L))
(cons (+ (car L) 1) (add-1-all (cdr L)))
nil)))
我明白,利弊正在使这种情况发生,因为递归正在添加到列表中。
这是有道理的。有没有一种方法可以在没有帮助功能的情况下做到这一点? – user2803198
你可以编写一个函数,它接受可变数量的参数,如果它有1个参数,就像'add-1-all';如果它有2个'add-1-all-helper',或者你可以写'如果你只是在担心污染你的命名空间,那么在add-1-all里面的'let'里面加上'1-all-helper'。 –
@NeilForrester你忘了解答。此外,通过使用具有默认值的可选参数或标签,您可以不使用帮助器功能。 – uselpa