Программа со вспомогательными функциями - Lisp
Формулировка задачи:
Требуется составить программу, используя вспомогательные функции.
Определите функцию (f s), которая вычисляет список (m1 m2 m3), состоящий из трех наибольших элементов числового списка s: m1>=m2>=m3. Исходный список содержит не менее трех элементов.
Заранее благодарен
Решение задачи: «Программа со вспомогательными функциями»
textual
Листинг программы
(defun 3-max (lst &optional (m1 nil) (m2 nil) (m3 nil)) (cond ((null lst) (list m1 m2 m3)) ((null m1) (3-max (cdr lst) (car lst) m2 m3)) ((> (car lst) m1) (3-max (cdr lst) (car lst) m1 m2)) ((null m2) (3-max (cdr lst) m1 (car lst) m3)) ((> (car lst) m2) (3-max (cdr lst) m1 (car lst) m2)) ((null m3) (3-max (cdr lst) m1 m2 (car lst))) ((> (car lst) m3) (3-max (cdr lst) m1 m2 (car lst))) (t (3-max (cdr lst) m1 m2 m3)))) ==> 3-max (3-max '(1 2 3 -3 2 5 2)) ==> (5 3 2)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д