在这个练习中,我试图计算斐波那契数,但是通过生成 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 关注
- 89 浏览
添加回答
举报
0/150
提交
取消