Определить функцию TREE-DEPTH - Lisp
Формулировка задачи:
- >(TREE-DEPTH ‘(A.B))
- 1
- >(TREE-DEPTH ‘((A.B).(C.D)))
- 2
Решение задачи: «Определить функцию TREE-DEPTH»
- (defun depth-tree (tree)
- (cond ((atom tree) 0)
- (t (max (+ 1 (depth-tree (car tree)))
- (+ 1 (depth-tree (cdr tree)))))))
- ==> depth-tree
- (depth-tree '(A.B))
- ==> 1
- (depth-tree '((A.B).(C.D)))
- ==> 2
Объяснение кода листинга программы
В данном коде определена функция с именем depth-tree
. Она принимает в качестве аргумента дерево, представленного в виде списка.
Если дерево является атомом (лишь один элемент), то функция возвращает 0.
В противном случае, функция рекурсивно вызывает саму себя для каждого элемента дерева (включая его самого), и возвращает максимальную глубину из всех этих вызовов.
Глубина дерева определяется как 1 плюс максимальная глубина его поддерева. Поддерево — это часть дерева, представленная в виде списка, начиная с любого его элемента, кроме первого.
Примеры использования функции depth-tree
показывают, что она корректно определяет глубину вложенности списков.
Код функции:
(defun depth-tree (tree)
- ` (cond ((atom tree) 0)
- ` (t (max (+ 1 (depth-tree (car tree)))
(+ 1 (depth-tree (cdr tree))))))
==> depth-tree
(depth-tree '(A.B))
==> 1
(depth-tree '((A.B).(C.D))
==> 2
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д