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

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

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

Листинг программы
  1. (DEFUN MAX_XY (X Y) (COND ((> X Y) X) (T Y)))
  2. (DEFUN MAX_LIST (LST)
  3. (COND ((NULL LST) NIL) ((EQ (LENGTH LST) 1) (CAR LST))
  4. (T (MAX_XY (CAR LST) (MAX_LIST (CDR LST))))))

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

textual
Листинг программы
  1. (defun max-cnt (w &optional (m (car w)) (n 0))
  2.   (cond ((null w) n)
  3.         ((> (car w) m) (max-cnt (cdr w) (car w) 1))
  4.         ((= (car w) m) (max-cnt (cdr w) m (1+ n)))
  5.         (t (max-cnt (cdr w) m n))))
  6.  
  7. > (max-cnt '(1 0 1 0 1))
  8. 3

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

В коде определена функция max-cnt, которая принимает два аргумента: w — список чисел, и m — максимальное значение, которое нужно считать. Если m не передано, то оно устанавливается в первый элемент списка w. Функция возвращает количество элементов в списке, равных m. Когда функция вызывается с аргументом w, она ищет количество элементов, равных m, и возвращает это число. Если m не равно первому элементу списка w, то функция рекурсивно вызывается для оставшейся части списка. Если m равно первому элементу списка w, то функция рекурсивно вызывается для оставшейся части списка, увеличивая счетчик на 1. Если первый элемент списка w не равен m, то функция продолжает поиск максимального элемента. В данном примере функция вызывается с аргументом (1 0 1 0 1), который является списком чисел. Максимальное значение m устанавливается в первый элемент списка w, то есть 1. Затем функция начинает поиск элементов, равных m. В данном случае, таких элементов три, поэтому функция возвращает число 3.

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


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

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

6   голосов , оценка 3.833 из 5

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

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

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