package main
import "fmt"
func fib_seq() func() int {
n0, n1 := 0, 1
return func() int {
result := n0
n0, n1 = n1, n0 + n1
return result
}
}
func main() {
f := fib_seq()
for i := 0; i < 10; i++ {
fmt.Println(f())
}
}
這是我的斐波那契序列發生器。 result
的定義是不需要的(但是必要的)。如何讓這個斐波那契序列發生器更優雅?
不知有沒有辦法在return
之後執行x, y = y, x + y
?
你可以做'defer'但它是醜陋的。 – zerkms
請參閱golang.org上的[示例](https://play.golang.org/p/A0nH96VB4S) –
您所做的很不錯。斐波納契計算有另一種方法。你可以使用矩陣來做到這一點。從編程觀點來看,它不太優雅,但從數學的角度來看它更加優雅。我有一個Python實現的例子https://gist.github.com/I159/ab818dfe0415d415d7314c57e17f0460#file-matrix_fibo-py-L62-L106。如果你覺得這很有趣,我可以把它翻譯成Go。 – I159