知道这是一个我提前道歉的新手问题。我正在写一个递归函数,它返回给定列表中的' o
(defun garde-o (liste)
(cond
((not liste) 0)
((equal (car liste) 'o) (+ 1 (garde-o(cdr liste))) )
((garde-o(cdr liste)) )
)
)
我没有返回发生的次数,而是希望仅使用' o返回给定列表。
就像那样:
(garde-o'(a o x& w o o)) 应该返回=> (o o o)
我不想使用pop,push,set ......只是我无法找回来。
答案 0 :(得分:1)
您当前的版本返回一个在每次递归时递增的数字。因此,您建议的版本应该通过构建列表来工作,并在每次递归时扩展它。
将0
替换为‘()
,将+ 1
替换为cons ‘o
。
答案 1 :(得分:0)
你很亲密,
(defun garde-o (liste)
(cond ((not liste) nil)
((equal (car liste) 'o) (cons (car liste) (garde-o (cdr liste))))
((garde-o (cdr liste)))))
用法:(garde-o '(a o x & w o ))
=> (o o)
您只需要选择已识别的汽车。