Проверить, отсортирован ли список по убыванию - Lisp

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

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

Здравствуйте, вечные проблемы с рекурсией, никак не могу ее понять. Помогите, пожалуйста

Реализовать функцию, которая для заданного списка проверяет, является ли он отсортированным по убыванию. В случае положительного результата – выдать список, в противном случае – NIL. Например, для списка ’(1 1 3 5 2) результатом будет NIL.

Решение задачи: «Проверить, отсортирован ли список по убыванию»

textual
Листинг программы
(defun task (lst)
  (if (apply '> lst) lst nil))
 
==> TASK
 
(task '(5 4 3 2 1))
 
==> (5 4 3 2 1)
 
(task '(5 4 2 3 1))
 
==> NIL

Объяснение кода листинга программы

В коде определена функция task, которая принимает в качестве аргумента список lst. Функция проверяет, отсортирован ли список в порядке убывания. Если список отсортирован, то возвращается сам список, иначе возвращается nil. В первом вызове функции task передается список (5 4 3 2 1) в качестве аргумента. Функция проверяет, что список отсортирован в порядке убывания (5 > 4 > 3 > 2 > 1). Так как это условие выполняется, функция возвращает сам список (5 4 3 2 1). Во втором вызове функции task передается список (5 4 2 3 1) в качестве аргумента. Функция проверяет, что список отсортирован в порядке убывания (5 > 4 > 3 > 2 > 1). Поскольку это условие не выполняется, функция возвращает nil.

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


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

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

6   голосов , оценка 4.667 из 5
Похожие ответы