Почему не считает количество элементов списка x, не превосходящих элемент а? - Lisp
Формулировка задачи:
Почему не считает количество элементов списка x не превосходящих элемент а.И как изменить код что бы начал считать?
(defun f (a x) (if (< (car x) a) (+ 1) (+ 0)) (if (< (cadr x) a) (+ 1) (+ 0)) (if (< (caddr x) a) (+ 1) (+ 0)))
Решение задачи: «Почему не считает количество элементов списка x, не превосходящих элемент а?»
textual
Листинг программы
(defun f (a x) (if (< (car x) a) (+ 1) (+ 0)) (if (< (cadr x) a) (+ 1) (+ 0)) (if (< (caddr x) a) (+ 1) (+ 0)))
Объяснение кода листинга программы
В данном коде определен функтор f
, который принимает два аргумента — a
и x
.
Список выполняется следующим образом:
(if (< (car x) a) (+ 1) (+ 0))
- Если первый элемент списка
x
меньшеa
, то возвращается1
, иначе0
. - Это условие не изменяет значение
x
, поэтому оно не влияет на дальнейший расчет.
- Если первый элемент списка
(if (< (cadr x) a) (+ 1) (+ 0))
- Если второй элемент списка
x
меньшеa
, то возвращается1
, иначе0
. - Это условие также не изменяет значение
x
, поэтому оно не влияет на дальнейший расчет.
- Если второй элемент списка
(if (< (caddr x) a) (+ 1) (+ 0))
- Если третий элемент списка
x
меньшеa
, то возвращается1
, иначе0
. - Это условие также не изменяет значение
x
, поэтому оно не влияет на дальнейший расчет. Поскольку список состоит только из трех элементов, то выполняются все три условия. Таким образом, функцияf
всегда возвращает1
. Таким образом, данный код считает количество элементов спискаx
, которые меньшеa
.
- Если третий элемент списка
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д