闭包斐波那契
//练习 6.9 不使用递归但使用闭包改写第 6.6 节中的斐波那契数列程序。
package main
import "fmt"
// fibonacci 函数会返回一个返回 int 的函数。
func fibonacci() func() int {
// 定义两个变量,初始值为0和1
num1, num2 := 0, 1
// 返回一个匿名函数
return func() int {
// 将num1和num2相加,将结果赋值给num1
num1, num2 = num2, num1+num2
// 返回num1
return num1
}
}
func main(){
// 调用fibonacci函数,将返回值赋值给f
f := fibonacci()
//输出n个斐波那契数列
n := 0
fmt.Scanln(&n)
for i := 0; i < n; i++ {
num := f()
fmt.Println(num)
}
}
推荐文章: