-1
我需要在Lisp中編寫一個函數來檢查元素N是否在樹TREE中。檢查元素是否在樹中
(defun TREE-CONTAINS (N TREE)
(cond ((equal TREE nil) nil)
((listp (CAR TREE)) (or (TREE-CONTAINS(N (CAR TREE)))
(TREE-CONTAINS(N (CDR TREE)))))
(t (cond ((equal N (CAR TREE)) t)
(t TREE-CONTAINS(N (CDR TREE)))))
)
)
例如,(TREE-CONTAINS (1 ((1 2 3) 4 5)))
將返回true。但是當我用這個例子測試我的代碼時,我總是收到一個錯誤,上面寫着「未定義的函數N調用了參數((2 3))
」:(TREE-CONTAINS 2 '(1 2 3))
。當然N應該是1,但我不知道它爲什麼認爲N是函數。任何想法?
SO的代碼格式使用文本中的{}和代碼,您可以用反引號括起來例如。也可以使用''''''''來獲得格式化。當你把一個名字放在括號裏時,你把它稱爲一個函數。 '(+ 1 2)'調用'+'。你認爲'(N(CDR TREE))'會做什麼,但是試着叫'N'? – Sylwester
謝謝,我明白你的意思了。但是,當我刪除CDR TREE的括號時,我會得到未綁定的CDR。 – user112358
我很確定'(cdr tree)'是正確的,但它不應該是'n'的參數。你可能對algol語言很熟悉,所以你所做的就像Java中的'n(cdr(tree))',但是'cdr'是函數'n'不是。 – Sylwester