所以我试图以递归方式找到回文,我已经生成了一个巨大的嵌套列表,看起来像'((n n n)(n n n)(n n n))
其中n是使用函数的数字ofc:
(defun double-lst (lst1 lst2)
(mapcar #'(lambda (n)
(multiply-lst n lst2))
lst1))
这个名单绝对是巨大的。我正在尝试编写一个递归函数,使用模板搜索我的列表中的汽车和cdr:
(DEFUN func (X)
(COND (end-test-1 end-value-1)
(end-test-2 end-value-2)
(T (combiner (func (CAR X))
(func (CDR X))))))
但我似乎无法获得我的版本或我尝试过的任何工作。 我已经尝试过这样的方法了:
(defun find-palindrome (lst)
(cond ((equal lst (reverse lst)) lst)
(t (or (find-palindrome (car lst))
(find-palindrome (cdr lst))))))
函数find-palindrome被传递(反向lst),因此它从最高值开始工作,首先返回第一个回文,但我不知道如何获得递归函数来完成它的东西。 我真的很感激如何编写car / cdr递归的深入解释。谢谢 :) 编辑: 我糟糕的find-palindrome回复了这个:
CL-USER> (find-palindrome '((1 2 3 4)(13 4 51 3) (1 2 4 9009)))
; Evaluation aborted on #<TYPE-ERROR expected-type: SEQUENCE datum: 1>.
我希望它能够回归(9009)。
答案 0 :(得分:1)
您的模板不适用于此问题; (car lst)
不一定是列表,但find-palindrome
的参数应该是。(car lst)
。或者至少您需要确保find-palindrome
是一个列表,然后再将其传递给reverse
。
同样,你似乎想看看一个数字的数字是否是回文; {{1}}旨在反转列表的元素,而不是数字的数字。