Определить функцию, возвращающую значение произведения ряда целых нечётных чисел - Lisp
Формулировка задачи:
Дано число N. Определить функцию, возвращающую значение произведения ряда целых нечётных чисел от 1 до N. Использовать только базис Лиспа
Решение задачи: «Определить функцию, возвращающую значение произведения ряда целых нечётных чисел»
textual
Листинг программы
(defun product-even (w) (reduce #'* (remove-if #'zerop (remove-if-not #'evenp w)))) > (product-even '(0 1 2 3 4)) 8
Объяснение кода листинга программы
В данном коде определена функция product-even
, которая принимает один аргумент w
.
- В первой строке кода функция
reduce
вызывается с двумя аргументами:#'*
— это оператор, который должен применяться последовательно к элементам списка, а(remove-if #'zerop (remove-if-not #'evenp w))
— это список, который нужно последовательно умножать, начиная с первого элемента. - Вторая строка кода удаляет все элементы списка
w
, которые равны нулю, с помощью функцииremove-if
и булевого значения#'zerop
. - Третья строка кода удаляет все нечетные числа из списка
w
, которые не равны нулю, с помощью функцииremove-if-not
и булевого значения#'evenp
. - Результатом выполнения функции
reduce
будет произведение всех оставшихся элементов спискаw
, которые являются четными числами. Таким образом, если мы вызовем функциюproduct-even
с аргументом(0 1 2 3 4)
, то она вернет результат8
, так как произведение всех четных чисел в данном списке равно 8.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д