在尝试调用必须返回的函数时,我不断收到一些随机错误二叉树中节点的级别。
这是我的方法
(defun nodeLevel(x index l)
(cond
((null l) nil)
((equal (car l) x) index)
((equal (cadr l) 1) (nodeLevel ( x (+ index 1) (cddr l))))
((equal (cadr l) 2) (nodeLevel ( x (+ index 1) (cddr l))))
(t nodeLevel(x (+ index 1) (cddddr l)))
)
)
这就是我所说的
(nodeLevel 'D '0 '(A 2 B 0 C 2 D 0 E 0) )
您有额外的括号。当您调用一个函数时,整个调用都在parens中进行,但参数没有自己的集合。你已经写了
(nodeLevel (x (+ index 1) (cddr l)))
你的意思可能是
(nodeLevel x (+ index 1) (cddr l))