【发布时间】:2018-07-28 16:43:39
【问题描述】:
我试图编写一些代码来生成七组,每组七个唯一的、不重复的数字,范围从 1 到 49。但是,当我运行代码时,它进入了无限循环,无休止地生成单个数字。这只发生在我在 main() 下包含一个小的 if-else 循环时,它的功能是检查重复的数字。
重复检查背后的逻辑是否存在问题?
package main
import "fmt"
import "math/rand"
import "time"
func main() {
var j [7]int
var n []int
rand.Seed(time.Now().UTC().UnixNano())
for m := 0; m < 7; m++ {
for i := 0; i < 8; i++ {
if i < 7 {
var duplicate int = randInt(1, 49)
n = append(n, duplicate)
if i != 0 {
if !integerinarray(duplicate, n) {
j[i] = duplicate
} else {
i--
}
} else {
j[i] = duplicate
}
fmt.Print(j[i], " ")
} else {
fmt.Println("\n")
//fmt.Println(n)
}
}
}
}
func randInt(min int, max int) int {
return min + rand.Intn(max-min)
}
func integerinarray(a int, s []int) bool {
for _, b := range s {
if b == a {
return true
}
}
return false
}
【问题讨论】:
-
格式化你的代码
-
您的代码中有 i-- 导致无限循环。
-
我已经用 vim 的 go 插件帮助格式化了代码,所以现在格式化很酷。
标签: go