题目
让我们用函数做些好玩的事情。
实现一个 fibonacci
函数,它返回一个函数(闭包),该闭包返回一个斐波纳契数列 (0, 1, 1, 2, 3, 5, ...)
。
代码
代码语言:javascript复制package main
import "fmt"
// 返回一个“返回int的函数”
func fibonacci() func() int {
i := 0
j := 1
flag := false
return func() int{
var res int
flag = !flag
if flag {
res = i
i = j
}else {
res = j
j = i
}
return res
}
}
func main() {
f := fibonacci()
for i := 0; i < 10; i {
fmt.Println(f())
}
}
更好的写法可能是这样
代码语言:javascript复制func fibonacci1() func() int {
back1, back2:= 0, 1
return func() int {
temp:=back1
back1,back2=back2,(back1 back2)
return temp
}
}