我很确定这个问题很微不足道。不幸的是,我是Ocaml编程的新手,然后我正在寻找错误的方向,很可能。最大值之和
我想创建一个函数sum_largest_values
,它获取输入之间的n个最大值并对它们进行求和。
我迄今为止最好的尝试:
utop # let sum_largest_values (x:int)(y:int)(z:int) =
if (x > y > z) || (y > x > z) then ((+) x y)
else
0;;
我不能确定这样的功能:
Error: This expression has type int but an expression was
expected of type bool
utop # let sum_largest_values (x:int)(y:int) =
if (x > y) || (y > x) then ((+) x y)
else
0;;
当我尝试添加第三个值的问题上升为什么第三个值z
使功能无法使用?
分而治之!函数式编程鼓励合成,即找到最大的n - >总和 – karakfa
我不明白这两个版本如何满足您的要求;当然,如果规范是“总和n个最大值”,那么n必须是该函数的一个参数,但我不会在任何地方看到它。**在担心身体问题之前,首先获取正确的功能签名**。如果您的问题是对事物列表中的n个最大元素求和,那么签名必须包含* list *和* count *。得到这个权利,并使该方法返回一个*错误的*值,现在你至少有一些东西可以开始测试,而你的身体是正确的。 –
此外,为什么该方法调用'sumsqr'而不是'sum_largest_values',如果这就是它的作用? –