猿问

生成数字时代码进入无限循环

我试图编写一些代码,该代码将生成七组七个七个唯一的,非重复的数字,范围从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

}


慕婉清6462132
浏览 322回答 3
3回答
随时随地看视频慕课网APP

相关分类

Go
我要回答