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

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

如何編寫乘積和問題的測試用例

如何編寫乘積和問題的測試用例

Go
jeck貓 2023-01-03 11:17:16
我正在嘗試在我的主要函數中為以下代碼編寫一個測試用例,該代碼用于查找嵌套數組的乘積和總和:package mainimport "fmt"type SpecialArray []interface{}func ProductSum(array SpecialArray) int {        return helper(array, 1)}func helper(array SpecialArray, multiplier int) int {        sum := 0        for _, el := range array {                if cast, ok := el.(SpecialArray); ok {                        sum += helper(cast, multiplier + 1)                } else if cast, ok := el.(int); ok {                        sum += cast                }        }        return sum * multiplier}給定一個混合了整數和數組的嵌套數組,上面的代碼應該返回所有元素的總和。嵌套數組中的元素將被相加,然后乘以它們的深度,即[1, [2, 3], 2] = 1 + 2(2+3) + 2 = 13我無法理解 SpecialArray []interface{} 類型。我的第一次嘗試是在我的 main 函數中簡單地定義一個嵌套切片,如下所示:func main() {        SpecialArray := [][]int{1, {2, 3}, 2}        result := ProductSum(SpecialArray)        fmt.Println(result)}但這是行不通的。我假設我需要用值初始化我的 SpecialArray 接口并將其傳遞給我的 ProductSum 函數。
查看完整描述

1 回答

?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

您非常接近但沒有完全正確地獲得數組文字語法:


func main() {

    special := SpecialArray{1, SpecialArray{2, 3}, 2}

    result := ProductSum(special)

    fmt.Println(result)

}

您的helper功能也很好,但您可以考慮使用類型開關:


func helper(array SpecialArray, multiplier int) int {

    sum := 0

    for _, v := range array {

        switch v := v.(type) {

        case int:

            sum += v

        case SpecialArray:

            sum += helper(v, multiplier+1)

        default:

            log.Fatalf("Unknown type: %T", v)

        }

    }

    return sum * multiplier

}

順便說一句,SpecialArray類型是切片而不是數組。


查看完整回答
反對 回復 2023-01-03
  • 1 回答
  • 0 關注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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