Описать функцию, которая, выдавала бы элемент списка по заданному номеру, считая от конца - Lisp
Формулировка задачи:
Решение задачи: «Описать функцию, которая, выдавала бы элемент списка по заданному номеру, считая от конца»
(defun task (lst n) (cond ((zerop n) (car (last lst))) (t (task (butlast lst) (- n 1))))) ==> TASK (task '(1 2 3 4 5) 0) ==> 5 (task '(1 2 3 4 5) 1) ==> 4 (task '(1 2 3 4 5) 3) ==> 2
Объяснение кода листинга программы
В коде определена функция task, которая принимает два аргумента: lst — список, и n — номер элемента, и должна возвращать элемент списка по заданному номеру, считая от конца. Функция реализована с помощью рекурсии и оператора cond. Когда n равно нулю, функция возвращает первый элемент списка (car (last lst)). Когда n не равно нулю, функция вызывает саму себя (task), передавая в качестве аргументов подсписок, полученный с помощью butlast lst, и уменьшенное на единицу значение n. В примере использования функции task передаётся список '(1 2 3 4 5) и числа 0, 1, 3, которые соответствуют номерам элементов 5, 4, 2. В результате выполнения функции task со списком '(1 2 3 4 5) и номером 0 возвращается элемент 5, для номера 1 возвращается элемент 4, для номера 3 возвращается элемент 2.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д