2 回答
TA贡献1951条经验 获得超3个赞
如果不使用 for 语句,我该怎么办?有什么想法吗?
递归调用
package main
import (
"fmt"
)
func main() {
list := [][]int{
{2, 3, 4},
{6, 8, 1},
}
reverse(list)
fmt.Println(list)
}
func reverse(d [][]int) {
j := len(d) - 1
i := 0
var h func()
h = func() {
if i<j {
d[i], d[j] = d[j], d[i]
i, j = i+1, j-1
h()
}
}
h()
}
转到语句
package main
import (
"fmt"
)
func main() {
list := [][]int{
{2, 3, 4},
{6, 8, 1},
}
reverse(list)
fmt.Println(list)
}
func reverse(d [][]int) {
j := len(d) - 1
i := 0
START:
if i < j {
d[i], d[j] = d[j], d[i]
i, j = i+1, j-1
goto START
}
}
TA贡献1852条经验 获得超7个赞
在这里使用循环 - 是最简单的解决方案。for
PS:您可以尝试使用像这样的硬编码解决方案:
list2 := [][]int{list[1], list[0]}
但它是黑客而不是解决方案,
所以最好使用基于循环的漂亮简洁的程序化解决方案。for
- 2 回答
- 0 关注
- 62 浏览
添加回答
举报