Определить функцию, возвращающую последний элемент - 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)
Решение задачи: «Определить функцию, возвращающую последний элемент»
textual
Листинг программы
(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
Объяснение кода листинга программы
В коде определена функция dummy-task
, которая принимает два аргумента: lst
и c
. Аргумент lst
является списком, а аргумент c
— это счетчик, который итерирует по элементам списка.
Если счетчик c
больше или равен 3, то возвращается строка Список слишком длинен
. Это условие предотвращает перебор элементов списка, если он слишком длинный.
Если список lst
пуст (т.е. null (cdr lst)
), то возвращается первый элемент списка (т.е. car lst
).
Если условие выше не выполняется, то функция рекурсивно вызывается для списка cdr lst
и увеличенного значения счетчика c
(т.е. dummy-task (cdr lst) (+ c 1)
).
Примеры использования функции:
(dummy-task '(1 2 3 4 5))
. ВернетСписок слишком длинен
, так как счетчикc
достигнет значения 3 до того, как список станет пустым.(dummy-task '(1 2 3 4)).
. ВернетСписок слишком длинен
, так как счетчикc
достигнет значения 3 до того, как список станет пустым.(dummy-task '(1 2 3)).
. Вернет 3, так как счетчикc
не достигнет значения 3 до того, как список станет пустым.(dummy-task '(1 2)).
. Вернет 2, так как счетчикc
не достигнет значения 3 до того, как список станет пустым.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д