Найти максимальный уровень вложенности заданного списка - Lisp
Формулировка задачи:
Помогите написать программу, которая находит максимальный уровень вложенности заданного списка.
Заранее спасибо ^^
Решение задачи: «Найти максимальный уровень вложенности заданного списка»
textual
Листинг программы
(defun depth (lst) (cond ((atom lst) 0) ((null lst) 0) (T (max (+ 1 (depth (car lst))) (depth (cdr lst)) ))))
Объяснение кода листинга программы
В данном коде определен функционал для нахождения максимального уровня вложенности списка.
defunопределяет функцию с именемdepth, которая принимает один аргументlst.- В функции используется
condдля проверки трех условий:- Если
lstявляется атомом (является листом), то возвращается 0. - Если
lstравенnil(пустой список), то возвращается 0. - В противном случае (т.е.
lstне является атомом илиnil), используетсяmaxдля нахождения максимального значения из двух:- 1, если текущий элемент (
car lst) является списком, и в этом случае рекурсивно вызываетсяdepthдля этого элемента, и результат увеличивается на 1. - результат вызова
depthдляcdr lst, то есть для оставшейся части списка.
- 1, если текущий элемент (
- Если
- Функция
depthвозвращает максимальное значение уровня вложенности списка.