我的解法基于教程的内容,也就是还没有到的内容不会出现在我的解法中,并且既然是练习便尽量地使用Go的特性,抛弃自己对其它语言使用的习惯。
习题:http://tour.golang.org/#43
f(1) = 0
f(2) = 1
f(n) = f(n-1) + f(n-2)
所以第一次执行打出 0, 然后 1, 1, 2, 3, 5, 8, 13, 21, 34
func fibonacci() func() int {
a := 0
b := 1
n := 0
return func() int {
if n == 0 {
n++
return a
} else if n == 1 {
n++
return b
}
a, b = b, a+b
return b
}
}