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

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

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

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

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

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

textual
Листинг программы
  1. (defun task (lst)
  2.   (if (apply '> lst) lst nil))
  3.  
  4. ==> TASK
  5.  
  6. (task '(5 4 3 2 1))
  7.  
  8. ==> (5 4 3 2 1)
  9.  
  10. (task '(5 4 2 3 1))
  11.  
  12. ==> 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

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

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

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