创建一个方案函数,该函数返回列表中负数的平均值



我试图找到问题的答案,但我在互联网上找不到任何东西。谁能告诉我如何编写这个函数?谢谢。

这很容易。您可以递归地执行此操作:

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

帮助程序使用嵌套if的任一cond执行此操作:

  1. 作为列表为空的基本情况,它使用sumcount的值来计算平均值。 例如。 (helper '() -4 2) ; ==> -2

  2. 我们知道该列表至少有一个元素。检查第一个元素是否为负数。如果是这样,那么它会与lst的其余部分一起递归,并使用前一个sum和元素的总和,count将前一个增加 1。例如。 (helper '(-1) 0 0) ; ==> (helper '() -1 1) ; ==> -1

  3. 只需与其余lst一起回溯并保持与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 '())           ; ==> ??

最新更新