2017-05-20 15 views
-3

私の質問の答えを見つけようとしていますが、インターネットで何も見つかりません。誰もこの機能を書く方法を教えてもらえますか? ありがとうございます。リスト内の負の数値の平均を返すスキーム関数を作成します。

+1

これは別の手順です。 1)リストから非負の数を除外する。 2)そのリストの数を合計する。 3)残っている数字の数を計算する。 4)平均を計算する。最近、さまざまな状況でこれらの問題の大部分を解決した可能性があります。 – molbdnilo

答えて

-1

非常に簡単です。あなたは再帰的にそれを行うことができます。リストが空の場合、それは計算する値sumcountを使用して基本ケースとして

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

    をヘルパーは、このネストされたifcondいずれかを使用してい平均。例えば。 (helper '() -4 2) ; ==> -2

  2. リストには少なくとも1つの要素があります。最初の要素が負であるかどうかを確認します。そうであれば、残りの部分は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 '())   ; ==> ?? 
関連する問題