我是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哎呀,对不起。同时学习多种语言当然不是一个好主意。编辑我的帖子。感谢您指出。 –
您在每次迭代时都按列表大小进行划分,而不是在最后一次。 –