Сформировать список - Lisp
Формулировка задачи:
Составить программу:
Сформировать список содержащее все четные числа больше N но меньше M.
Решение задачи: «Сформировать список»
textual
Листинг программы
- (defun task (n m &optional (c (if (evenp m) m (- m 1))) (r nil))
- (cond ((< c n) r)
- (t (task n m (- c 2) (cons c r)))))
- ==> task
- (task 5 10)
- ==> (6 8 10)
- (task 5 11)
- ==> (6 8 10)
- (task 4 11)
- ==> (4 6 8 10)
Объяснение кода листинга программы
В коде определён функционал для выполнения задачи, список формируется следующим образом:
- (defun task (n m &optional (c (if (evenp m) m (- m 1))) (r nil)) — функция с тремя аргументами, принимает n, m, и опциональный аргумент c, и возвращает r.
- (cond ((< c n) r) — начало условия.
- (t (task n m (- c 2) (cons c r))))) — если условие не выполняется, то вызывается рекурсивно функция task с аргументами n, m, (-c 2), и (cons c r) в качестве результата предыдущего вызова функции.
- (task 5 10) — вызывает функцию task с аргументами 5 и 10, и результатом будет (6 8 10).
- (task 5 11) — вызывает функцию task с аргументами 5 и 11, и результатом будет (6 8 10).
- (task 4 11) — вызывает функцию task с аргументами 4 и 11, и результатом будет (4 6 8 10).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д