全排列的递归写法
package main
import "fmt"
func perm(r []int, i int, n int) {
if i == n {
for j:=0; j<=n; j++ {
fmt.Print(r[j])
}
fmt.Println()
} else {
for j:=i; j<=n; j++ {
r[i], r[j] = r[j], r[i]
perm(r, i+1, n)
r[i], r[j] = r[j], r[i]
}
}
}
func main() {
r := []int{1, 2, 3}
perm(r, 0, 2)
}
```go
func perm2(nums []int, pos []int, n int) {
if n==-1 {
for j:=0; j<len(nums); j++ {
fmt.Print(nums[pos[j]])
}
fmt.Println()
} else {
for j:=0; j<len(nums); j++ {
if pos[j] == -1 {
pos[j] = n;
perm2(nums, pos, n-1)
pos[j] = -1
}
}
}
}