請教一個切片遞迴賦值的問題

necydcy發表於2019-03-19

一個全排列的問題,我按下面的程式碼執行存進去的是最後遞迴出來的陣列,求怎麼解決啊。

package main

import "fmt"

func swap(nums []int, i, j int) {
    temp := nums[i]
    nums[i] = nums[j]
    nums[j] = temp
}
func permute(nums []int) [][]int {
    length := len(nums) - 1
    var res [][]int
    dfs1(nums, 0, length, &res)
    fmt.Println(res)
    return res
}
func dfs1(nums []int, cur, end int, res *[][]int) {
    if cur == end {
        fmt.Println(nums)
        *res = append(*res, nums)
        fmt.Println("nums", res)
        return
    } else {
        for i := cur; i <= end; i++ {
            swap(nums, cur, i)
            dfs1(nums, cur+1, end, res)
            swap(nums, cur, i)
        }
    }
}

func main() {
    nums := []int{4, 5, 6}
    permute(nums)
}

[4 5 6] nums &[[4 5 6]] [4 6 5] nums &[[4 6 5] [4 6 5]] [5 4 6] nums &[[5 4 6] [5 4 6] [5 4 6]] [5 6 4] nums &[[5 6 4] [5 6 4] [5 6 4] [5 6 4]] [6 5 4] nums &[[6 5 4] [6 5 4] [6 5 4] [6 5 4] [6 5 4]] [6 4 5] nums &[[6 4 5] [6 4 5] [6 4 5] [6 4 5] [6 4 5] [6 4 5]] [[4 5 6] [4 5 6] [4 5 6] [4 5 6] [4 5 6] [4 5 6]]

更多原創文章乾貨分享,請關注公眾號
  • 請教一個切片遞迴賦值的問題
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章