(我是 Go 的新手。)我正在研究這個 leetcode 問題:https ://leetcode.com/problems/pascals-triangle/package mainimport "fmt"func main() { arrRes := [][]int{} gen(5, arrRes) fmt.Println(arrRes) }func gen(numRows int, arrRes [][]int) { build(numRows, 0, arrRes)}func build(n int, level int, arrRes [][]int) { if(n == level) { return } arr := []int{} if level == 0 { arr = append(arr, 1) } else if level == 1 { arr = append(arr, 1, 1) } else { // get it out tmp := arrRes[level-1] arr = comb(tmp) } arrRes = append(arrRes, arr) build(n, level+1, arrRes)}func comb(arr []int) []int{ // arr type init tmpArr := []int{1} for i:=1; i<len(arr); i++ { sum := arr[i-1] + arr[i] tmpArr = append(tmpArr, sum) } // go use val, not ref tmpArr = append(tmpArr, 1) return tmpArr;}我想定義一個累加變量arrRes := [][]int{}并繼續傳遞給遞歸函數。我認為 Go 是按值傳遞而不是按引用傳遞。有沒有辦法保持這種模式?我有兩種替代方法:傳遞一個全局變量。將二維數組傳遞給func然后返回新的二維數組。https://github.com/kenpeter/go_tri/blob/master/tri_global.gohttps://github.com/kenpeter/go_tri/blob/master/tri.go
- 0 回答
- 0 關注
- 98 瀏覽
添加回答
舉報
0/150
提交
取消