在這個練習中,我試圖計算斐波那契數,但是通過生成 goroutine 并通過參數中的指針發回結果,但我做錯了,請幫忙package mainimport ( "fmt")func fib(n int, p *int) { fmt.Println(n) var a, b int if n > 1 { go fib(n-1, &a) go fib(n-2, &b) *p = a + b } else { *p = n } fmt.Println(*p)}func main() { c := -1 go fib(5, &c) fmt.Println(c)}
1 回答

狐的傳說
TA貢獻1804條經驗 獲得超3個贊
只是為了不留下未回答的問題(可能不是最好的,但可以完成練習)
package main
import (
"fmt"
"sync"
)
func fib(n int, p *int, wg1 *sync.WaitGroup) {
// fmt.Println(n)
a, b := -1, -1
var wg sync.WaitGroup
if n > 1 {
wg.Add(1)
go fib(n-1, &a, &wg)
wg.Add(1)
go fib(n-2, &b, &wg)
wg.Wait()
*p = a + b
} else {
*p = n
}
wg1.Done()
// fmt.Println(*p)
}
func main() {
c := -1
var wg sync.WaitGroup
wg.Add(1)
go fib(30, &c, &wg)
wg.Wait()
fmt.Println(c)
}
- 1 回答
- 0 關注
- 109 瀏覽
添加回答
舉報
0/150
提交
取消