Макросы в 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))))
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д