요소 N이 트리 트리에 있는지 확인하는 함수를 Lisp에 작성해야합니다.요소가 트리에 있는지 확인하십시오.
(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를 반환합니다. 하지만이 예제 코드를 테스트 할 때 "((2 3))
인수가 호출 된 정의되지 않은 함수 N"오류 메시지가 나타납니다. (TREE-CONTAINS 2 '(1 2 3))
. 물론 N은 1이되어야하지만 N이 함수라고 생각하는 이유를 모르겠습니다. 어떤 생각?
SO에는 '{}'로 코드 서식이 지정되어 있으며 텍스트 내에 코드를 넣을 수 있습니다 (예 : backticks). ''''''''명령을 내려야합니다. 이름 주위에 괄호를 넣으면 함수라고 부릅니다. '(+ 1 2)'는'+'를 호출합니다. '(N (CDR TREE))'이 어떻게 하겠지만'N '을 부르려고합니까? – Sylwester
고마워, 너 무슨 뜻인지 알 겠어. 그러나 CDR TREE 주변의 괄호를 제거하면 언 바운드 CDR이 생깁니다. – user112358
'(cdr tree)'가 정확하다고 확신하지만'n'에 대한 인수가 아니 었습니다. 당신은 아마도 algol 언어에 익숙 할 것이므로 Java에서'n (cdr (tree)) '과 비슷합니다. 그러나'cdr'은'n'이 아닌 함수입니다. – Sylwester