Определить функцию, возвращающую значение произведения ряда целых нечётных чисел - 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.

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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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