Описать функцию, которая, выдавала бы элемент списка по заданному номеру, считая от конца - Lisp

Узнай цену своей работы

Формулировка задачи:

Описать функцию, которая, выдавала бы элемент списка по заданному номеру, считая от конца. Все функции нужно сделать используя примитивные функции, типо типа car, cdr, без использования lambda и прочих сложных функций.

Решение задачи: «Описать функцию, которая, выдавала бы элемент списка по заданному номеру, считая от конца»

textual
Листинг программы
  1. (defun task (lst n)
  2.   (cond ((zerop n) (car (last lst)))
  3.         (t (task (butlast lst) (- n 1)))))
  4.  
  5. ==> TASK
  6.  
  7. (task '(1 2 3 4 5) 0)
  8.  
  9. ==> 5
  10.  
  11. (task '(1 2 3 4 5) 1)
  12.  
  13. ==> 4
  14.  
  15. (task '(1 2 3 4 5) 3)
  16.  
  17. ==> 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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы