Я продолжаю получать некоторые случайные ошибки при попытке вызвать мою функцию, которая должна вернуться уровень узла из бинарного дерева.
это мой метод
(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)))
)
)
Вот как я это называю
(уровень узла 'D '0' (A 2 B 0 C 2 D 0 E 0))
У вас лишние скобки. Когда вы вызываете функцию, весь вызов помещается в круглые скобки, но аргументы не получают собственного набора. Вы написали
(nodeLevel (x (+ index 1) (cddr l)))
То, что вы, вероятно, имели в виду, было
(nodeLevel x (+ index 1) (cddr l))
Вы сделали аналогичную опечатку в строке «else» (последнее условие cond
).
Я удаляю ненужные скобки, и теперь я получаю COND: переменная NODELEVEL не имеет значения. Любая идея, почему это происходит?