Go语言使用闭包实现斐波那契数列
要使用Go语言实现一个闭包来计算斐波那契数列,你可以定义一个函数,该函数返回一个闭包,闭包可以迭代地生成斐波那契数列的下一个数字。
示例代码
package main
import "fmt"
func fibonacci() func() int {
a, b := 0, 1
return func() int {
a, b = b, a+b
return a
}
}
func main() {
// 创建一个斐波那契数列生成器
fib := fibonacci()
// 生成并打印前10个斐波那契数
for i := 0; i < 10; i++ {
fmt.Println(fib())
}
}
在上面的代码中,fibonacci
函数返回了一个闭包,该闭包内部维护了斐波那契数列中的前两个数字(a
和b
)。每次调用闭包函数时,它会计算下一个斐波那契数,并将a
和b
更新为新的值,然后返回新的斐波那契数。在main
函数中,我们创建了一个斐波那契数列生成器,并使用循环生成并打印前10个斐波那契数。
这个闭包实现允许你在需要的时候生成斐波那契数列的下一个数字,而无需事先生成整个序列。