Произведение первых двух атомов подсписка - Lisp

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

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

Помогите пожалуйста! Сижу на зачёте - горю! Нужна программа, которая находит произведение первых двух атомов подсписка

Решение задачи: «Произведение первых двух атомов подсписка»

textual
Листинг программы
(defun task (lst &optional (r 1) (c 0))
  (cond ((null lst) 1)
          ((atom (car lst)) (if (= c 1) (* r (car lst)) (task (cdr lst) (car lst) 1)))
          (t (task (cdr lst) r c))))

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

В коде определена функция task, которая принимает два аргумента: lst и два опциональных аргумента r и c. Если lst равно nil, то возвращается 1. Если car lst является атомом, то проверяется значение c. Если c равно 1, то возвращается произведение r и car lst. Если c не равно 1, то вызывается рекурсивно функция task с аргументами cdr lst и car lst, и значение c увеличивается на 1. Если lst не является пустым списком, то вызывается рекурсивно функция task с аргументами cdr lst и r, и значение c устанавливается в 0. Код реализован с использованием условий cond, if, car, cdr и nil.

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


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

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

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