我试图找到问题的答案,但我在互联网上找不到任何东西。谁能告诉我如何编写这个函数?谢谢。
这很容易。您可以递归地执行此操作:
(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
一起回溯并保持与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 '()) ; ==> ??