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