练习:斐波纳契闭包
让我们用函数做些好玩的事情。
实现一个
fibonacci
函数,它返回一个函数(闭包),该闭包返回一个斐波纳契数列 `(0, 1, 1, 2, 3, 5, ...)`。
这是一个比较简单的问题。我考虑到前两个值的特殊性,所以需要用if进行判断。
package main import "fmt" // 返回一个“返回int的函数” func fibonacci() func() int { m := 0 n := 1 i := 0 return func() int { i++ if i == 1 { return 0 } if i == 2 { return 1 } else { t := m m = n n = t + n return n } } } func main() { f := fibonacci() for i := 0; i < 10; i++ { fmt.Println(f()) } }