Функция,которая считает количество элементов в списке, больших 10 - Lisp
Формулировка задачи:
Помогите пожалуйста
Решение задачи: «Функция,которая считает количество элементов в списке, больших 10»
textual
Листинг программы
(defun count> (lst n) (if lst (if (> (car lst) n) (+ 1 (count> (cdr lst) n)) (count> (cdr lst) n)) 0)) ==> count> (count> '(1 2 3 1 2 3 4) 2) ==> 3
Объяснение кода листинга программы
В коде определена функция count>
, которая принимает два аргумента: lst
и n
.
Функция выполняет следующие шаги:
- Если
lst
не равноnil
, то выполняется следующая последовательность действий: a. Еслиcar lst
большеn
, то значение1
добавляется к результату рекурсивного вызова функцииcount>
дляcdr lst
иn
. b. Еслиcar lst
меньше или равноn
, то выполняется рекурсивный вызов функцииcount>
дляcdr lst
иn
. - Если
lst
равноnil
, то результат вызова функцииcount>
дляcdr lst
иn
присваивается переменнойcount
. - Результат вызова функции
count>
дляcdr lst
иn
возвращается как результат выполнения функцииcount>
. При вызове функцииcount> '(1 2 3 1 2 3 4) 2
происходит следующее: - Первый элемент списка
1
не больше2
, поэтому выполняется рекурсивный вызов функцииcount>
дляcdr lst
иn
. - Второй элемент списка
2
не больше2
, поэтому выполняется рекурсивный вызов функцииcount>
дляcdr lst
иn
. - Третий элемент списка
3
не больше2
, поэтому выполняется рекурсивный вызов функцииcount>
дляcdr lst
иn
. - Четвертый элемент списка
1
не больше2
, поэтому выполняется рекурсивный вызов функцииcount>
дляcdr lst
иn
. - Пятый элемент списка
2
не больше2
, поэтому выполняется рекурсивный вызов функцииcount>
дляcdr lst
иn
. - Шестой элемент списка
3
не больше2
, поэтому выполняется рекурсивный вызов функцииcount>
дляcdr lst
иn
. - Седьмой элемент списка
4
больше2
, поэтому значение1
добавляется к результату рекурсивного вызова функцииcount>
дляcdr lst
иn
. - Результат рекурсивного вызова функции
count>
дляcdr lst
иn
равен3
, поэтому результат выполнения функцииcount>
дляlst
иn
равен3
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д