-2
因此,我正在爲Lisp編寫一個語法,並且希望找到語法樹的最大深度。Lisp - 在嵌套列表中查找最大深度
例如,
(SENTENCE (NOUN-PHRASE (DETERMINER THE) (NOUNPLURAL MEN))
(VERB-PHRASE-PAST
((VERBPAST SAW) (NOUN-PHRASE (DETERMINER THE) (NOUNPLURAL DOGS)))))
最大深度應爲4(句子 - >動詞短語-過去 - >名詞短語 - >確定 - >的)。
然而,列表長度是3,並且在內部列表展開時總是不正確。
如何編寫一個函數來返回此最大深度(不使用任何外部庫)?
使用REDUCE而不是APPLY進行列表操作。 – 2014-09-24 04:56:59
@RainerJoswig,'reduce'比'apply'更好嗎?無論如何,'max'減少了它的論點。 – Mark 2014-09-24 13:00:45
@Mark:上面的代碼只能移植到列表最多50個項目。在Common Lisp中查看變量'CALL-ARGUMENTS-LIMIT'。 GCL:64,LispWorks:2047,CLISP 4096 ...「REDUCE」沒有這個限制。 REDUCE用於摺疊任意序列(列表和向量)。 'APPLY'用於將函數應用於*參數列表* - 它的大小限制可以低至50個參數。 – 2014-09-24 15:03:16