Определить функцию, возвращающую последний элемент - Lisp (229099)
Формулировка задачи:
Необходимо определить функцию, возвращающую последний элемент списка, содержащего не более 3-х элементов.
Если не больше 3-х элементов - выводим последний, иначе сообщение 'spisok>3. Моя программа почему-то всегда переходит на ветку, с сообщением, что элементов больше трех. Помогите исправить ошибку
(defun get-last (lst) (if (>= (length lst) 3) (cond ((null (cdr lst)) (car lst)) (t (get-last (cdr lst))))) 'spisok>3)
Код к задаче: «Определить функцию, возвращающую последний элемент - Lisp (229099)»
(defun dummy-task (lst &optional (c 0)) (cond ((>= c 3) "Список слишком длинен") ((null (cdr lst)) (car lst)) (t (dummy-task (cdr lst) (+ c 1))))) ==> DUMMY-TASK (dummy-task '(1 2 3 4 5)) ==> "Список слишком длинен" (dummy-task '(1 2 3 4)) ==> "Список слишком длинен" (dummy-task '(1 2 3)) ==> 3 (dummy-task '(1 2)) ==> 2
9 голосов, оценка 3.556 из 5
СОХРАНИТЬ ССЫЛКУ