Массив умножения (управляющие структуры) - Lisp

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

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

Помогите разработать функцию с применением управляющих конструкций: DO "с телом", DO "без тела", LOOP, PROG и рекурсии. где - обозначение массива умножения. Считать первую отметку от i = 1 до i = M, вторую - от j = 1 до j = N.
Сначала необходимо разработать функцию расчета заданной формулы. Далее необходимо разработать функцию расчета внутреннего цикла с применением предыдущей функции и без применения. В конечном варианте разработать функцию двойного цикла с применением предыдущих разработанных функций и без их применения.
И пример работы для другой формулы:
(defun sum (i N a b)
    ((< N 0) 0)
     (+(expt (+(a a) (b b)) (- i N))
     (sum i (- N 1) a b)
   ) )

Решение задачи: «Массив умножения (управляющие структуры)»

textual
Листинг программы
(defun task (n m)
  (let ((p 1))
   (do ((i 1 (+ i 1)))
       ((> i n))
       (do ((j 1 (+ j 1)))
           ((> j m))
           (setq p (* p (/ i (^ j i))))))
   p))     
   
==> task
 
(task 3 5)
 
==> 1/384000000
 
;; В HomeLisp последней версии можно так:
 
(defun ta (n m)
  (iter (for i from 1 to n)
    (iter (for j from 1 to m)
       (multiplying (/ i (^ j i))))))

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

В коде определена функция с именем task, которая принимает два аргумента n и m. Внутри функции используется оператор let, чтобы создать переменную p со значением 1. Затем используется цикл do, который выполняется, пока значение i меньше n. Внутри этого цикла используется еще один цикл do, который выполняется, пока значение j меньше m. Внутри этого вложенного цикла выполняется операция умножения p на значение i, деленное на значение j, возведенное в степень i. Затем значение p обновляется результатом этой операции. В конце функции возвращается значение p. При вызове функции task с аргументами 3 и 5, результатом будет 1/384000000.

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


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

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

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