老师 你好, 我有关一个在写代码中的问题
我先上代码:
//简单的说下 代码的作用就是 返回所有的子集
func Tianyun_Subsets(nums []int) [][]int {
result:=make([][]int,0)
result=append(result,[]int{})
for i:=0;i<len(nums);i++{
length:=len(result)
for j:=0;j<length;j++{
result = append(result,append(result[j],nums[i]))
}
}
return result
}
//这里是我的 Test case
import (
"testing"
"fmt"
)
func TestTianyun_Subsets(t *testing.T) {
fmt.Println(Tianyun_Subsets([]int{9,0,3,5,7})
}
好了 这道题的正常的输出 应该是这样的:
[[] [9] [0] [9 0] [3] [9 3] [0 3] [9 0 3] [5] [9 5] [0 5] [9 0 5] [3 5] [9 3 5] [0 3 5] [9 0 3 5] [7] [9 7] [0 7] [9 0 7] [3 7] [9 3 7] [0 3 7] [9 0 3 7] [5 7] [9 5 7] [0 5 7] [9 0 5 7] [3 5 7] [9 3 5 7] [0 3 5 7] [9 0 3 5 7]]
然鹅 我的输出是:
[[] [9] [0] [9 0] [3] [9 3] [0 3] [9 0 3] [5] [9 5] [0 5] [9 0 5] [3 5] [9 3 5] [0 3 5] [9 0 3 7] [7] [9 7] [0 7] [9 0 7] [3 7] [9 3 7] [0 3 7] [9 0 3 7] [5 7] [9 5 7] [0 5 7] [9 0 5 7] [3 5 7] [9 3 5 7] [0 3 5 7] [9 0 3 7 7]]
我发现的问题在于 有一个重复的 9 0 3 7 按照我的思路 不应该出现这种情况 然后我 debug 了一下 发现了一个比较神奇的地方 也就是我不懂的地方:
就是我打圈的地方,本来 9 0 3 5的数值 被改成了 9 0 3 7 导致后面 执行的时候 出现了错误
老师可以回答下 这个是什么原因吗? 拜托了,然后可以指出 哪里写错了吗??
我个人感觉是 append 那里 slice 拓展的原因
谢谢