亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

可變參數函數的困難

可變參數函數的困難

Go
慕尼黑的夜晚無繁華 2023-08-07 18:50:04
摘自《Go 編程簡介》,第 91 頁,練習題 4,主題:函數:編寫一個帶有一個可變參數的函數來查找數字列表中的最大數字?到目前為止,我已經編寫了這段代碼,但它顯示錯誤package mainimport (    "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 mainimport "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)}這個問題程序正在運行,但第一個程序沒有運行,我不知道為什么。
查看完整描述

2 回答

?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

在數學和計算機編程中,可變參數函數是一種不定數量的函數,即接受可變數量的參數的函數。

您的函數簽名稍微不正確。

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,這是您在此問題中尋找的正確返回值。

(去游樂場)

祝你好運!


查看完整回答
反對 回復 2023-08-07
?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

如果您通過https://play.golang.org/運行代碼,您將看到一些語法錯誤。下面是在切片中找到最大值的正確版本。...正如您所注意到的,切片參數調用中有額外的內容。

package main


import (

    "fmt"

)


func findMaximum(args []int) int {

    max := args[0]

    for _, v := range args {

        if v > max{

            max = v

        }

    }

    return max

}


func main() {

    x := []int{

        48, 96, 86, 68,

        57, 82, 63, 70,

        37, 34, 83, 27,

        19, 97, 9, 17,

    }

    fmt.Println(findMaximum(x))

}


查看完整回答
反對 回復 2023-08-07
  • 2 回答
  • 0 關注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號