Go语言练习:斐波纳契闭包
package main
import "fmt"
// via http://www.talaland.com/go-tour-fibonacci/
// fibonacci 函数会返回一个返回 int 的函数。
func fibonacci() func() int {
//count 用于计数调用次数,只要考虑0和1,不知有没有其他更好的方法
//sum1 和 sum2 用于储存 fib函数的两次和的值
var count,sum1,sum2 int= 0,1,1
return func() int {
switch count {
//0 和 1 fib=1
case 0,1:
count++
//其他 fib(n) = fib(n-1) + fib(n-2)
default:
sum1,sum2 = sum2,sum1+sum2
}
return sum2
}
}
func main() {
f := fibonacci()
for i := 0; i < 10; i++ {
fmt.Println(f())
}
}