我是F#的新手,非常抱歉,如果這聽起來太基本了。 我試圖計算使用遞歸和模式匹配的元組列表的第二個元素的平均值,但它沒有給我正確的結果。我的代碼有:列表中第二元素元素的平均值
let rec getAverageAge (list: List<string*int>) =
let listSize = float 1/float list.Length
match list with
| [] -> 0.0
| head :: tail -> (float (2016 - snd head) * listSize + getAverageAge tail)
我打電話這樣說:
getAverageAge [("A",2015); ("B",2015); ("C",2015)]
如果我只能做的總和,它的工作原理。但是,當我將計算平均年齡所需的部門納入結果是不正確的。就像在這種情況下,平均值應該是1(平均年齡不是所有數字的平均值),但它給了我1.83333。我究竟做錯了什麼?我猜float分區有問題。任何見解都會有幫助。
這不是紅寶石。 –
@pascalbetz哎呀,對不起。同時學習多種語言當然不是一個好主意。編輯我的帖子。感謝您指出。 –
您在每次迭代時都按列表大小進行劃分,而不是在最後一次。 –