我試圖編寫一些代碼,該代碼將生成七組七個七個唯一的,非重復的數字,范圍從1到49。但是,當我運行代碼時,它陷入了無限循環的無休止地生成單個數字的過程。僅當我在main()下包括一個小if-else循環時才發生這種情況,該循環的功能是檢查重復的數字。重復檢查背后的邏輯是否存在問題?package mainimport "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}
生成數字時代碼進入無限循環
慕婉清6462132
2021-04-02 18:13:11