闭包斐波那契

//练习 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)

}

}
讨论数量: 1

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!