2017-05-20 1 views
-3

제 질문에 대한 답을 찾고 있지만 인터넷에서 아무것도 찾을 수 없습니다. 아무도이 함수를 작성하는 방법을 말해 주시겠습니까? 대단히 감사합니다.목록에서 음수의 평균을 반환하는 체계 함수를 만듭니다.

+1

다음은 별도의 단계입니다. 1) 목록에서 음이 아닌 숫자를 필터링합니다. 2) 그 목록의 수를 합친다; 3) 남아있는 숫자를 계산합니다. 4) 평균을 계산하십시오. 최근 다른 상황에서 이러한 문제의 대부분을 해결했을 것입니다. – molbdnilo

답변

-1

매우 쉽습니다. 당신은 재귀 적으로 수행 할 수 있습니다

(define (helper lst sum count) 
    ...) 

을 도우미가하는이 사용 중 중첩 된 ifcond : 기본 경우와

  1. 목록이 sumcount가를 계산하는 값을 사용 비어 평균. 예. (helper '() -4 2) ; ==> -2

  2. 목록에는 적어도 하나의 요소가 있습니다. 첫 번째 요소가 음수인지 확인하십시오. 그렇다면 lst의 나머지 부분과 함께 이전의 sum과 요소의 합계를 사용하여 재발행하고 count으로 1을 증가시킵니다. (helper '(-1) 0 0) ; ==> (helper '() -1 1) ; ==> -1

  3. lst의 나머지 부분과 recruse 및 sumcount 같은 값을 유지합니다. 당신이 도착했을 때 (helper '(1) -1 1) ; ==> -1

지금이 당신은 당신의 실제 기능에 포함하고 그것을 사용할 수 있습니다 사용 :

(define (average-negative lst) 
    (define (helper lst sum count) 
    ...) 

    (helper lst 0 0)) 

테스트

(average-negative '(-1))   ; ==> -1 
(avwerage-negative '(1 -2 3 -4)) ; ==> -3 

을 그리고 용감한에 대한 :

(average-negative '())   ; ==> ??