从Go编程简介(第91页),练习问题4,主题:函数:
写一个带有一个可变参数的函数,该函数可以在数字列表中找到最大的数字?
到目前为止,我已经编写了这段代码,但是它显示了错误
package main
import (
"fmt"
)
func findMaximum(args ...[]int) []int {
max := args[0]
for _, v := range args {
if v > []args {
max = v
}
}
return args
}
func main() {
x := []int{
48, 96, 86, 68,
57, 82, 63, 70,
37, 34, 83, 27,
19, 97, 9, 17,
}
fmt.Println(findMaximum(x))
}
我已经从该计划中获得了参考
(第75页,问题编号:4,主题:数组,切片和映射)
编写一个在此列表中找到最小编号的程序:
x := []int{
48,96,86,68,
57,82,63,70,
37,34,83,27,
19,97, 9,17,
}
这是我为解决此问题而编写的程序
package main
import "fmt"
func main() {
arr := []uint{
48, 96, 86, 68,
57, 82, 63, 70,
37, 34, 83, 27,
19, 97, 9, 17,
}
min := arr[0] // assume first value is smallest
for _, value := range arr {
if value < min {
min = value // found another value, replace previous value of min
}
}
fmt.Println("The smallest value is : ", min)
}
这个问题程序正在运行,但是第一个不是我不知道为什么。
在数学和计算机程序设计中,可变函数是一种不确定的函数,即接受可变数量的参数的函数。
资料来源:维基百科
您的功能签名略有错误。
func findMaximum(args ...[]int) []int
这表明findMaximum
将可变数量的int
片作为参数并返回一个int
片。您要解决的问题是要求输入可变数量的int
参数并返回一个单数int
,该单数在提供的集合中最大。
调用函数看起来像这样:
largest := findMaximum([]int{1, 2, 3}, []int{4, 5, 6}, []int{7, 8, 9})
在这种情况下,largest
类型将[]int
指示函数int
以片的形式返回了多个值。这将是没有意义的,因为应该只有一个最大值(假设没有重复项)。
您想要一个如下所示的函数签名:
func findMaximum(args ...int) int
调用此函数将如下所示:
largest := findMaximum(1, 2, 3, 4, 5, 6, 7, 8, 9)
...或者如果您将数字分割成片:
nums := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
largest := findMaximum(nums...)
在这种情况下,largest
将是类型int
,这是您在此问题中寻找的正确返回值。
祝好运!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句