Разработать функцию вычитания - Lisp

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

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

Разработать арифметическую функцию SUB вычитания натурального числа, используя только функцию вычитания (SUB1), рекурсию, COND и встроенные логические функции.

Решение задачи: «Разработать функцию вычитания»

textual
Листинг программы
(defun sub-n (x y)
    (cond ((= x y) 0)
        (T(1+ (sub-n (1- x) y)))))
SUB-N
(defun sub (x y)
    (cond ((>= x y) (sub-n x y))
            (T (-(sub-n y x)))))
SUB
(SUB 100 10)
90
(SUB 10 100)
-90

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

В коде представлены две функции: sub-n и sub.

  1. Функция sub-n принимает два аргумента x и y.
  2. Если x равно y, то возвращает 0.
  3. Иначе, рекурсивно вызывает себя с аргументами x и y, уменьшенным на единицу. Функция sub принимает два аргумента x и y.
  4. Если x больше или равно y, то рекурсивно вызывает функцию sub-n с аргументами x и y.
  5. Иначе, возвращает разность y и x (т.е. -(sub-n y x)). В последней строке кода вызывается функция sub с аргументами 100 и 10. Результатом выполнения является число 90.

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


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

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

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