Умножение через сложение и вычитание - Lisp

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

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

Можно ли на примере данного кода произвести умножение через сложение и вычитание?
(defun umn (x y) 
(let ((a 0)(b 0)) 
(loop  (cond ((equal a y) (return b))) 
    (setq a (+ 1 a)) 
    (setq b (+ b x)))))

Решение задачи: «Умножение через сложение и вычитание»

textual
Листинг программы
(defun mult (x y)
  (let ((r 0))
    (dotimes (i x r)
      (setq r (+ r y)))))
 
==> MULT
 
(mult 7 8)
 
==> 56

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

В коде определена функция MULT, которая принимает два аргумента x и y. Внутри функции используется let для создания переменной r со значением 0. Затем используется dotimes для выполнения цикла от 0 до x. В каждой итерации значение переменной r увеличивается на y. В конце функция возвращает значение переменной r, которое является результатом умножения x и y. При вызове функции (mult 7 8) в качестве аргументов передаются 7 и 8. В результате выполнения функции возвращается 56.

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


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

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

10   голосов , оценка 4.1 из 5