Программа со вспомогательными функциями - Lisp

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

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

Требуется составить программу, используя вспомогательные функции. Определите функцию (f s), которая вычисляет список (m1 m2 m3), состоящий из трех наибольших элементов числового списка s: m1>=m2>=m3. Исходный список содержит не менее трех элементов. Заранее благодарен

Решение задачи: «Программа со вспомогательными функциями»

textual
Листинг программы
  1. (defun 3-max (lst &optional (m1 nil) (m2 nil) (m3 nil))
  2.   (cond ((null lst) (list m1 m2 m3))
  3.         ((null m1) (3-max (cdr lst) (car lst) m2 m3))
  4.         ((> (car lst) m1) (3-max (cdr lst) (car lst) m1 m2))
  5.         ((null m2) (3-max (cdr lst) m1 (car lst) m3))
  6.         ((> (car lst) m2) (3-max (cdr lst) m1 (car lst) m2))
  7.         ((null m3) (3-max (cdr lst) m1 m2 (car lst)))
  8.         ((> (car lst) m3) (3-max (cdr lst) m1 m2 (car lst)))
  9.         (t (3-max (cdr lst) m1 m2 m3))))  
  10.  
  11. ==> 3-max
  12.  
  13. (3-max '(1 2 3 -3 2 5 2))
  14.  
  15. ==> (5 3 2)

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


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

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

8   голосов , оценка 4.75 из 5

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

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

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