2017-03-17 2 views
0

주어진 정수 값 목록의 짝수 숫자 목록을 반환하는 Scheme 함수를 작성하십시오. 목록이 단순하지 않을 수 있으며 중첩 목록이 생길 수 있으며 짝수 목록을 찾을 필요가 있습니다 그 안에있는 숫자. (2 4 6 4)짝수 목록을 반환하는 체계 작성

(define (evenlist numberlist) 
    (cond 
    ((null? numberlist) '()) 
    (else(not (= 0 (modulo (numberlist) 2))(evenlist(car numberlist)))) 
    )) 

이 나 무엇인가

(DEFINE (evenlist의 numberlist) (evenlist numberlist)를 정의 ( 결과를 본체로 이것을 사용이 같은 결과 STH 점점 나는 비난하지 않는다. :

+0

그리고 지금까지 어떤 시도를 했습니까? 문제가있는 부분을 가리키고 체계 구현을 게시하십시오. –

+0

(define (evenlist numberlist) (null? numberlist) '()) (else (not 0 (modulo (numberlist) 2))()) – Priba101

+0

질문을 편집하고 덧글이 아닌 코드를 추가하십시오 –

답변

1

입력 목록이 임의로 중첩 된 목록 일 경우 약간의 작업이 필요하다.이 목록을 처리하는 표준 템플릿 (사례 : 비어있는 목록, 목록이 아닌 목록 또는 목록), 결과를 평평하게하는 추가 논리 (그 ' 왜 append이 여기에 사용됩니까?) :

(define (evenlist numberlist) 
    (cond ((null? numberlist) '()) 
     ((not (pair? numberlist)) 
     (if (even? numberlist) (list numberlist) '())) 
     (else 
     (append (evenlist (car numberlist)) 
       (evenlist (cdr numberlist)))))) 
+0

괜찮지 만 그 전에 오류로 출력하기 때문에 쌍 함수를 정의해야합니다. – Priba101

+0

'쌍? '은 Scheme 프리미티브이므로 해석기의 일부 여야합니다. 다른보다 고급 언어로 변경하거나 "list"또는 이와 유사한 항목이 스키마에 정의되어 있는지 확인한 다음 바꾸십시오. –

+0

선생님은 중간급 언어를 사용할 수 있다고 말했고 그 쌍을 변경 했습니까? 죄수에? (목록 2 4)를 출력합니다. 내가 그 쌍을 대체하면 올바른 – Priba101