Phi*_*zin -2 lisp list common-lisp
所以我在Lisp中编写一个语法,并希望找到语法树的最大深度.
例如,
(SENTENCE (NOUN-PHRASE (DETERMINER THE) (NOUNPLURAL MEN))
(VERB-PHRASE-PAST
((VERBPAST SAW) (NOUN-PHRASE (DETERMINER THE) (NOUNPLURAL DOGS)))))
Run Code Online (Sandbox Code Playgroud)
最大深度应为4(句子 - >动词 - 短语 - 过去 - >名词 - 短语 - >确定者 - >).
但是列表长度为3,并且在扩展内部列表时始终不正确.
如何编写函数来返回此最大深度(不使用任何外部库)?
(defun max-depth (tree)
(if (atom tree)
0
(1+ (reduce #'max (mapcar #'max-depth tree)))))
Run Code Online (Sandbox Code Playgroud)
您可能需要更改0值以适合您的规格.
注意:编辑使用REDUCE而不是APPLY.REDUCE没有任何列表长度限制.