Написать функцию, возвращающую максимальный элемент простого списка (HomeLisp)

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

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

Помогите решить еще одну задачку.

Решение задачи: «Написать функцию, возвращающую максимальный элемент простого списка (HomeLisp)»

textual
Листинг программы
(defun max-el (lst &optional (m (car lst)))
  (cond ((null lst) m)
        ((> (car lst) m) (max-el (cdr lst) (car lst)))
        (t (max-el (cdr lst) m))))
 
==> max-el
 
(max-el '(1 2 3 1 2 3))
 
==> 3

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

В данном коде определена функция с именем max-el. Она принимает два аргумента: lst — простой список, и m — необязательный аргумент, который является начальным значением для результата. Если аргумент m не указан, то он инициализируется значением первого элемента списка lst. Внутри функции происходит проверка списка lst на пустоту. Если список пуст, то возвращается значение m. Если список не пуст, то проверяется, является ли первый элемент списка больше значения m. Если это так, то рекурсивно вызывается функция max-el для оставшейся части списка и передается значение первого элемента как новое значение m. Если первый элемент списка меньше или равен значению m, то рекурсивно вызывается функция max-el для оставшейся части списка и передается значение m как неизменное значение m. Таким образом, функция находит максимальный элемент в простом списке. Пример использования функции: (max-el '(1 2 3 1 2 3)) Результат: 3

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


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

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

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