Почему не считает количество элементов списка 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. Список выполняется следующим образом:

  1. (if (< (car x) a) (+ 1) (+ 0))
    • Если первый элемент списка x меньше a, то возвращается 1, иначе 0.
    • Это условие не изменяет значение x, поэтому оно не влияет на дальнейший расчет.
  2. (if (< (cadr x) a) (+ 1) (+ 0))
    • Если второй элемент списка x меньше a, то возвращается 1, иначе 0.
    • Это условие также не изменяет значение x, поэтому оно не влияет на дальнейший расчет.
  3. (if (< (caddr x) a) (+ 1) (+ 0))
    • Если третий элемент списка x меньше a, то возвращается 1, иначе 0.
    • Это условие также не изменяет значение x, поэтому оно не влияет на дальнейший расчет. Поскольку список состоит только из трех элементов, то выполняются все три условия. Таким образом, функция f всегда возвращает 1. Таким образом, данный код считает количество элементов списка x, которые меньше a.

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

9   голосов , оценка 3.778 из 5
Похожие ответы