Макросы в Lisp

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

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

Помогите пожалуйста!!! При описании функционала можно использовать средства императивного программирования, но он должен быть реализован без побочных эффектов. Все циклические процессы должны быть реализованы с помощью хвостовой рекурсии. Определите макрос для цикла while, реализующий итерационный процесс через вызов функции с хвостовой рекурсией. Формат команды для вызова макроса: (while condition body) где condition — условие выполнения цикла; body — тело цикла — одно или несколько выражений. Тело цикла должно исполняться пока результат вычисления условия не равен NIL. Результат выполнения макроса — значение последнего выражения в теле body. Например, для подсчета суммы (i=2,...,N) sin i можно составить код с использованием макроса
(let ((s 0)
(i 2))
(while (<= i N)
(incf s (sin i))
(incf i))
s)

Мне нужно для: Произведение (i=1,...,N) Произведение (j=1,...,N) j/(i^2)

Решение задачи: «Макросы в Lisp»

textual
Листинг программы
 (defun y1 (N x)
   (let ((s 1) (i 0) (m x))
     (while ((setf s (выражение) (incf i)) ((> i N) s))))

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


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

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

11   голосов , оценка 3.727 из 5