Найти арифметическую сумму - Lisp

Узнай цену своей работы

Формулировка задачи:

Найти арифметическую сумму с условием ,что автоматически знак каждого элемента чередуется программа должна возвр количество элементов и их сумму и по возможности результат деления суммы на количество

Решение задачи: «Найти арифметическую сумму»

textual
Листинг программы
  1. (defun task (lst &optional (c 0) (sev 0) (sod 0))
  2.   (cond ((null lst) (if (zerop c) 'empty_list! (/ (- sev sod) c))) ;; четн минус нечетн
  3.         ((evenp c) (task (cdr lst) (+ c 1) (+ sev (car lst)) sod))
  4.         (t         (task (cdr lst) (+ c 1) sev (+ sod (car lst))))))
  5.  
  6. ==> task
  7.  
  8. (task '(1 2 3 4 5 6 7 8 9 10))
  9.  
  10. ==> -1/2

Объяснение кода листинга программы

В коде определена функция task, которая принимает два аргумента: lst и c. Аргумент c является счетчиком, а lst — список чисел. Если список пустой, то возвращается значение empty_list!. Иначе, если c — четное число, то вызывается рекурсивный вызов функции task для списка cdr lst, увеличенного счетчика c и суммы sev и sod, которые инициализированы нулем. Если c — нечетное число, то также вызывается рекурсивный вызов функции task для списка cdr lst, увеличенного счетчика c и суммы sev и sod, которые инициализированы нулем. В конце функции возвращается результат вычисления (- sev sod) / c. Значения переменных в коде: — lst — список чисел (1 2 3 4 5 6 7 8 9 10)c — счетчик, инициализированный нулем — sev — сумма нечетных элементов списка, инициализированная нулем — sod — сумма четных элементов списка, инициализированная нулем

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


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

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

12   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы