第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

在切片上運行遞歸函數(shù)時出現(xiàn)意外行為

在切片上運行遞歸函數(shù)時出現(xiàn)意外行為

Go
幕布斯7119047 2022-05-18 16:58:25
在 Python 中,我可以進(jìn)行遞歸,例如:def dfs(a, path):    if len(a) == 0:        print(path)        return    for i in range(len(a)):        dfs(a[:i]+a[i+1:], path+str(a[i]))if __name__ == "__main__":    a = [10, 2]    dfs(a, "")它將輸出:102210但是,如果我在 Go 中做類似的事情,package mainimport "fmt"func dfs(ns []int, path string) {    if len(ns) == 0 {        fmt.Println(path)        return    }    for i, v := range ns {        nx := append(ns[:i], ns[i+1:]...)        dfs(nx, fmt.Sprintf("%v%v", path, v))    }}func main() {    nums := []int{10, 2}    dfs(nums, "")}輸出將是:10222我猜這種行為是由于切片鏈接到 Go 上的下劃線數(shù)組,但我不明白如何以及如何調(diào)試它。你能指出我的問題嗎?
查看完整描述

1 回答

?
米琪卡哇伊

TA貢獻(xiàn)1998條經(jīng)驗 獲得超6個贊

這行代碼修改了 ns 的后備數(shù)組:

    nx := append(ns[:i], ns[i+1:]...)

通過將切片元素復(fù)制到新的支持?jǐn)?shù)組來修復(fù):

    nx := append(([]int)(nil), ns[:i]...) // copy
    nx = append(nx, ns[i+1:]...)

在操場上運行它

您還可以使用完整的切片表達(dá)式強(qiáng)制復(fù)制:

    nx := append(ns[0:i:i], ns[i+1:]...)

在操場上運行它。


查看完整回答
反對 回復(fù) 2022-05-18
  • 1 回答
  • 0 關(guān)注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號