原题
练习:斐波纳契闭包
让我们用函数做些好玩的事情。
实现一个 fibonacci 函数,它返回一个函数(闭包),该闭包返回一个斐波纳契数列 `(0, 1, 1, 2, 3, 5, ...)`。
package main
import "fmt"
// fibonacci is a function that returns
// a function that returns an int.
func fibonacci() func() int {
a,b := 0,1 //初始值为0,1
return func () int{
a,b = b,a+b //将a变为b,b变为a+b
return b-a //此时应该返回为改变时的a, 也就是a+b-b = b-a
}
}
func main() {
f := fibonacci()
for i := 0; i < 10; i++ {
fmt.Println(f())
}
}
结果:
0 1 1 2 3 5 8 13 21 34
版权声明:本文为q1576962841原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。