厚土Go学习笔记 | 27. 斐波纳契闭包
时间:2022-05-06
本文章向大家介绍厚土Go学习笔记 | 27. 斐波纳契闭包,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
此例我们用 go 语言的闭包实现一个斐波那契数列的返回值。
斐波那契数列,从第三个数字开始,每个数字都是前两个数字的和。
所以,我们需要在 fibonacci 函数中定义三个变量 x1,x2,sum
。
而返回值使用闭包的方式,每次求和,扔掉x1的值,把x2的值赋值给x1,把sum的值赋值给x2,达到保存最新的斐波那契数字的目的。
sum
就是最终返回并打印的斐波那契数列的一个一个的值。
package main
import "fmt"
// fibonacci 函数会返回一个返回 int 的函数。
func fibonacci() func() int {
x1, x2 := 0, 1
sum := 0
return func() int {
sum = x1 + x2
x1 = x2
x2 = sum
return sum
}
}
func main() {
f := fibonacci()
for i := 0; i < 10; i++ {
fmt.Print(f(),", ")
}
fmt.Println("...")
}
此例中,因为斐波那契数字自身就具备循环的所有变量,因此,在打印语句中调用 fibonacci 函数对应变量时无需给入参数。
运行结果
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python算法基础
- pytorch读取一张图像进行分类预测需要注意的问题(opencv、PIL)
- 【LeetCode】旋转数组的最小数字day08
- 【原创】Spring Boot集成Redis的玩法
- 当前页面是否可见
- 【LeetCode】两数之和day09
- 【原创】SpringBoot快速整合Thymeleaf模板引擎
- 【leetCode】打印从1到最大的n位数day10
- 你真的了解Java中的String吗(也太菜了)?
- 【设计模式】变化和不变化的代码进行分离day01
- isObject
- 【leetCode】股票的最大利润day12
- Spring Boot 集成 Druid 监控数据源
- 文本分类实战(八)—— Transformer模型
- 滚动页面