func combine() [][]int {
ret:= com(0,[]int{1,2,3,4})
fmt.Println(ret)
return ret
}
func com(pre1 int ,req []int)([][]int){
fmt.Println(pre1,req)
if len(req)==0{
return [][]int{
[]int{},
}
}
out:=[][]int{}
for i:=0;i<len(req);i++{
pre:=req[i]
a:=make([]int,len(req[0:i]))
copy(a,req[0:i])
next:=append(a,req[i+1:]...)
c:=com(pre,next)
for _,v := range c{
val:=append([]int{pre},v...)
out=append(out,val)
}
}
return out
}