背景:我試圖實現一個邏輯,它可以找到最小的正數,它可以被1到20之間的所有數字整除。我實現了一個順序版本並得到了答案爲232792560.更正我的公寓的實施
問:當我嘗試建立在這個問題上的一些併發(見的代碼取消註釋塊),它不運行,但從來沒有顯示有任何結果。你們中的任何一個人能指導我去哪裏出錯?
注意:我非常新golang;而我知道,因爲沒有保證,我將有最小的正數作爲第一個結果,這不是併發最好的問題。不過,我出於好奇,試了一下。
package main
import(
"fmt"
)
func divide(num int) bool {
for i := 1; i <= 20; i++ {
if num % i != 0 {
return false
}
}
return true
}
func main() {
num:=0
//simple function
/*for {
num++;
result := divide(num)
if result {
fmt.Println("Smallest number is: ", num)
break
}
}*/
//go-routine
//go-routine
var wg sync.WaitGroup
for {
num++;
wg.Add(1)
go func(x int) {
result := divide(x)
if result {
fmt.Println("Smallest number is: ", x)
defer wg.Done()
}
}(num)
}
wg.Wait()
fmt.Println("End.")
}
希望這也很明顯,蠻力的方法是不是解決問題的最好方法,同時或以其他方式。 – Iridium