Superpaintman /演变 - of-go-programmer

2021-04-07 14:10:20

包FAC Func因子(n int)int {res:= 1用于i:= 1;我< = n; i ++ {res * = i} return res}

Package Fac Func因子(n int)int {如果n == 0 {return 1} else {return因子(n - 1)* n}}

Package Fac Func因子(N接口{})接口{} {v,有效:= n。(int)如果!有效{return 0} Res:= 1对于i:= 1;我< = v; i ++ {res * = i} return res}

包FAC进口"同步" Func因子(n int)int {var(左,右= 1,1个wg sync。waitgroup)wg。添加(2)枢轴:= n / 2 go func(){为i:= 1;我<枢; i ++ {left * = i} wg。 done()}()go func(){为我:=枢轴;我< = n; i ++ {右* = i} wg。 done()}()wg。等待()返回left *右}

包FAC Func因子(n int)< chan int {ch:= make(chan int)go func(){prev:= 1对于i:= 1;我< = n; i ++ {v:= prev * i ch< - v prev = v}关闭(ch)}()return ch}

包fac / ** * @see https://en.wikipedia.org/wiki/factorial * /型号iactoral interfact {calcularefactorial()int} //factivalimpl实现ifactorial。 var _ ifactorial =(* factorialimpl)(nil)/ ** *用于查找n的因子。 * /型armalialimpl struct {/ ** * n。 * / n int} / ** *构造函数的变量。 * * @param n。 * / func newfactorial(n int)* factorialimpl {return& AffirialiaMPL {N:N,}} / ** *获取在因子函数中使用的n。 * * @return int。 * / func(这个* factorialimpl)getn()int {返回它。 n} / ** *设置用于因子函数的n。 * * @param n。 * @return void。 * / func(这个* factorialimpl)setn(n int){这个。 n = n} / ** *返回n的阶乘。 * * @todo删除"如果"陈述。也许我们应该使用工厂或某些东西? * * @return int。 * / func(这个* factorialimpl)calcumatefactorial()int {如果是这样。 n == 0 {return 1} n:=这。这个。 n =这个。 n - 1返回此。 calculatefactorial()* n}

包fac // agemalial返回n! Func因子(n int)int {res:= 1用于i:= 1;我< = n; i ++ {res * = i} return res}

包FAC //阶段返回n!.func因子(n int)int {res:= 1 for i:= 1; 我< = n; i ++ {res * = i} return res}