Разработать функцию вычитания - 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
.
- Функция
sub-n
принимает два аргументаx
иy
. - Если
x
равноy
, то возвращает 0. - Иначе, рекурсивно вызывает себя с аргументами
x
иy
, уменьшенным на единицу. Функцияsub
принимает два аргументаx
иy
. - Если
x
больше или равноy
, то рекурсивно вызывает функциюsub-n
с аргументамиx
иy
. - Иначе, возвращает разность
y
иx
(т.е.-(sub-n y x)
). В последней строке кода вызывается функцияsub
с аргументами 100 и 10. Результатом выполнения является число 90.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д