제 질문에 대한 답을 찾고 있지만 인터넷에서 아무것도 찾을 수 없습니다. 아무도이 함수를 작성하는 방법을 말해 주시겠습니까? 대단히 감사합니다.목록에서 음수의 평균을 반환하는 체계 함수를 만듭니다.
-3
A
답변
-1
매우 쉽습니다. 당신은 재귀 적으로 수행 할 수 있습니다
(define (helper lst sum count)
...)
을 도우미가하는이 사용 중 중첩 된 if
의 cond
: 기본 경우와
목록이
sum
및count
가를 계산하는 값을 사용 비어 평균. 예.(helper '() -4 2) ; ==> -2
목록에는 적어도 하나의 요소가 있습니다. 첫 번째 요소가 음수인지 확인하십시오. 그렇다면
lst
의 나머지 부분과 함께 이전의sum
과 요소의 합계를 사용하여 재발행하고count
으로 1을 증가시킵니다.(helper '(-1) 0 0) ; ==> (helper '() -1 1) ; ==> -1
은
lst
의 나머지 부분과 recruse 및sum
및count
같은 값을 유지합니다. 당신이 도착했을 때(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 '()) ; ==> ??
다음은 별도의 단계입니다. 1) 목록에서 음이 아닌 숫자를 필터링합니다. 2) 그 목록의 수를 합친다; 3) 남아있는 숫자를 계산합니다. 4) 평균을 계산하십시오. 최근 다른 상황에서 이러한 문제의 대부분을 해결했을 것입니다. – molbdnilo