我试图找到问题的答案,但我无法在互联网上找到任何内容。谁能告诉我如何写这个功能? 非常感谢你。
答案 0 :(得分:-1)
这很容易。你可以递归地做到这一点:
(define (helper lst sum count)
...)
帮助程序使用嵌套cond
的{{1}}:
作为列表为空的基本情况,它使用值if
和sum
来计算平均值。例如。 count
我们知道该列表至少有一个元素。检查第一个元素是否为负数。如果是,则使用(helper '() -4 2) ; ==> -2
的其余部分进行递归,并使用之前lst
和元素的总和,并将sum
增加先前的1。例如, count
只需使用(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