Вложенный Список - Lisp
Формулировка задачи:
Проверить, является ли список списком чисел, или нет
Работающий код:
Нужно к этому добавить проверку и на вложенный список(если вложенный, выводил true)
Листинг программы
- (defun check (lst)
- (cond
- ((Null lst)
- "yes"
- )
- ((numberp (car lst))
- (check (cdr lst))
- )
- (
- "no"
- )
- )
- )
Решение задачи: «Вложенный Список»
textual
Листинг программы
- (defun is-num-list (lst)
- (cond ((null lst) t)
- ((numberp (car lst)) (is-num-list (cdr lst)))
- ((listp (car lst)) (and (is-num-list (car lst)) (is-num-list (cdr lst))))
- (t nil)))
- ==> is-num-list
- (is-num-list '(1 2 3 (((6 7) 8) 9)))
- ==> T
- (is-num-list '(1 2 3 (((6 7) a) 9)))
- ==> NIL
Объяснение кода листинга программы
В данном коде определён встроенный функцию is-num-list
, которая принимает в качестве аргумента список lst
.
Если lst
— это пустой список, то возвращается t
.
Если первый элемент lst
является числом, то функция рекурсивно вызывается для оставшейся части списка.
Если первый элемент lst
является вложенным списком, то функция проверяет, все ли элементы в этом списке являются числами. Если это так, то функция рекурсивно вызывается для оставшейся части вложенного списка. Если это не так, то возвращается nil
.
Если первый элемент lst
не является ни числом, ни вложенным списком, то возвращается nil
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д