三、 已知程序如下,其中op可能是两个数的比较规则,或者计算规则。 def cal(num: Array[Int], op:(Int,Int) => Int) = { } 先要求数组的所有数之和以及求数组的最大值, val arr = cal(Array(1, 2, 3, 4,5,6,7,8), opAdd)。请实现cal函数及对应高阶函数。
时间: 2024-03-10 19:47:10 浏览: 81
可以通过传入不同的 `op` 参数来实现不同的操作。下面是 `cal` 函数的实现,根据 `op` 参数的不同,计算数组的和或最大值:
```scala
def cal(num: Array[Int], op:(Int,Int) => Int) = {
var result = num(0)
for (i <- 1 until num.length) {
result = op(result, num(i))
}
result
}
val arr = Array(1, 2, 3, 4, 5, 6, 7, 8)
val opAdd = (a:Int, b:Int) => a + b // 定义加法操作
val opMax = (a:Int, b:Int) => if (a > b) a else b // 定义求最大值操作
val sum = cal(arr, opAdd) // 计算数组的和
val max = cal(arr, opMax) // 计算数组的最大值
println(s"数组的和为: $sum")
println(s"数组的最大值为: $max")
```
输出结果为:
```
数组的和为: 36
数组的最大值为: 8
```
在上面的代码中,`cal` 函数接收一个整数数组 `num` 和一个二元操作符 `op` 作为参数。在函数中,首先将数组中的第一个元素作为初始值,然后通过遍历数组中的每个元素,依次对初始值和当前元素进行操作,得到最终的结果。
在上面的示例中,我们分别定义了加法操作和求最大值操作,并通过 `cal` 函数对数组进行了求和和求最大值的操作。
阅读全文