나는 exp 또는 중첩 된 목록에 el이 표시되는지 확인하기 위해 번 이상을 입력하고 I ' 내가 관련 특급에 얼마나 많은 엘의 경우 계산과 함께 모든 합계하지만 난 카운터를 추가하고 모든 재귀 호출을해야한다 생각스키마 - 요소가 표현식이나 중첩 된 표현식에 두 번 이상 표시되는지 여부를 확인하는 함수
(define appearInExp?
(lambda (el exp)
(let ((found? (ormap (lambda (e) (equal? el e)) exp))
(listsLeft? (ormap (lambda (e) (list? e)) exp))
(lists (filter (lambda (e) (list? e)) exp)))
(if found?
#t
(if (not listsLeft?)
#f
(let ((elList (extendList el (length lists))))
(ormap appearInExp? elList lists)))))))
*help function:*
(define extendList
(lambda (el num)
(if (equal? num 1)
`(,el)
`(,el ,@(extendList el (- num 1))))))
**tests:
(appearInExp? '3 '(1 2 3)) ---> #t
(appearInExp? '3 '(1 2 '(3))) ---> #t
(appearInExp? '3 '(1 2 '(1 2 ((3))))) ---> #t
: m 문제가 두 번를 확인하는 방법을 이해하는 데 그렇게하는 데 문제가 있습니다.
당신의 도움은 대단히 감사하겠습니다.