Написать функцию, возвращающую максимальный элемент простого списка (HomeLisp)
Формулировка задачи:
Решение задачи: «Написать функцию, возвращающую максимальный элемент простого списка (HomeLisp)»
(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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д