Go指南练习_斐波纳契闭包
源地址 https://tour.go-zh.org/moretypes/26
一、题目描述
让我们用函数做些好玩的事情。
实现一个 fibonacci
函数,它返回一个函数(闭包),该闭包返回一个斐波纳契数列 `(0, 1, 1, 2, 3, 5, ...)`。
二、题目分析
- 要实现一个fibonacci函数;
- 使该函数返回一个闭包;
- 该闭包再返回一个斐波那契数列;
- 闭包函数会引用函数体以外的值,可以对其修改。
三、Go代码
package main import "fmt" // fibonacci is a function that returns // a function that returns an int. func fibonacci() func() int { back1, back2:= 0, 1 // 预先设定好两个初始值 return func() int { temp := back1 //记录(back1)的值 back1,back2 = back2,(back1 + back2) // 重新赋值(这个就是核心代码) return temp //返回temp } } func main() { f := fibonacci() //返回一个闭包函数 for i := 0; i < 10; i++ { //打印斐波纳契数列 fmt.Println(f()) } }
运行结果
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子里和园子外的大大们指正错误,共同进步。或者直接私信我 (^∀^)
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!
您的资助是我最大的动力!
金额随意,欢迎来赏!
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的
本博客的所有打赏均将用于博主女朋友的化妆品购买以及养肥计划O(∩_∩)O。我是【~不会飞的章鱼~】!