Go 斐波那契闭包
来源:互联网 发布:伦纳德官方体测数据 编辑:程序博客网 时间:2024/06/03 21:57
斐波那契数列,从第三个数字开始,每个数字都是前两个数字的和。
所以,我们需要在fibonacci函数中定义三个变量x1,x2,sum。
而返回值使用闭包的方式,每次求和,扔掉x1的值,把x2的值赋值给x1,把sum的值赋值给x2,达到保存最新的斐波那契数字的目的。
sum就是最终返回并打印的斐波那契数列的一个一个的值。
package mainimport "fmt"// fibonacci 函数会返回一个返回 int 的函数。func fibonacci() func() int { x1, x2 := 0, 1 sum := 0 return func() int { sum = x1 + x2 x1 = x2 x2 = sum return sum }}func main() { f := fibonacci() for i := 0; i < 10; i++ { fmt.Print(f(),", ") } fmt.Println("...")}此例,因为斐波那契数字自身就具备循环的所有变量,因此,在打印语句中调用fibonacci()函数对应变量时无需给出输入参数。
运行结果
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
阅读全文