什么是斐波那契数列,还有优化?

简介: 什么是斐波那契数列,还有优化?

什么是斐波拉契数列 (Fibonaccisequence)

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多・斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为 “兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……

使用 Golang 递归实现斐波拉契数列

package main
import (
    "fmt"
)
func fibonacci(n int) (r int) {
    if n <= 2 {
  return 1
    }
    return fibonacci(n-1) + fibonacci(n-2)
}
func main() {
    for i := 0; i < 10; i++ {
  fmt.Printf("%d, ", fibonacci(i))
    }
}

得到结果:

1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,

斐波拉契数列的递归实现优化

由于上述代码使用了两次递归,为减少递归次数,对递归代码优化如下:

package main
import (
    "fmt"
)
func advanceFibonacii(n int) (r int) {
    if n <= 2 {
  return 1
    }
    result := 1
    for i := 2; n > i; n-- {
  result += advanceFibonacii(n - 2)
    }
    return result
}
func main() {
    for i := 0; i < 10; i++ {
  fmt.Printf("%d, ", advanceFibonacii(i))
    }
}

得到结果

1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,

斐波那契数列的应用

  • 算法
  • 斐波那契堆
  • 欧几里得算法的时间复杂度
  • 物理学:氢原子能级问题
  • 自然界:植物的生长
  • 波浪理论与股市
  • 斐波那契螺旋
  • 建筑学
  • 据说一个小男孩参考斐波那契数列发明了太阳能电池树
  • 斐波那契螺旋形的摇椅

总结

斐波那契数列非常重要,所有关于数学的书几乎都会提到。

相关文章
|
网络协议 算法 数据可视化
TCP/IP与ISO/OSI模型的差异解析
TCP/IP与ISO/OSI模型的差异解析
434 0
|
存储 物联网 Serverless
玩转AIGC,基于函数计算一键部署 Stable Diffusion
玩转AIGC,基于函数计算一键部署 Stable Diffusion
1084 0
|
7月前
|
人工智能 运维 JavaScript
当AI学会了自我升级,天网还会远吗?
文章通过一个模拟侦探游戏的例子展示了AI如何通过“自我升级”和动态执行代码的能力来解决复杂问题。
321 33
当AI学会了自我升级,天网还会远吗?
|
8月前
|
人工智能 算法 语音技术
Video-T1:视频生成实时手术刀!清华腾讯「帧树算法」终结闪烁抖动
清华大学与腾讯联合推出的Video-T1技术,通过测试时扩展(TTS)和Tree-of-Frames方法,显著提升视频生成的连贯性与文本匹配度,为影视制作、游戏开发等领域带来突破性解决方案。
276 4
Video-T1:视频生成实时手术刀!清华腾讯「帧树算法」终结闪烁抖动
|
9月前
|
算法 数据安全/隐私保护
通过MATLAB实现PID控制器,积分分离控制器以及滑模控制器
本课题通过MATLAB实现PID控制器、积分分离控制器和滑模控制器,对比结果显示滑模控制具有最快的收敛性能、较强的鲁棒性和较小的超调量,优于其他两种控制器。系统仿真结果无水印,核心程序基于MATLAB 2022a。PID控制器由P、I、D单元组成,积分分离PI在大误差时不进行积分,减少超调;滑模控制通过设计滑动面使系统快速收敛,抑制扰动。
|
SQL 数据可视化 算法
SQL Server聚类数据挖掘信用卡客户可视化分析
SQL Server聚类数据挖掘信用卡客户可视化分析
|
11月前
|
网络协议 视频直播 网络性能优化
第一问:谈谈你理解的TCP协议
本文介绍了TCP协议的基本概念及其在网络模型中的位置,详细解释了TCP与UDP的区别,重点描述了TCP的三次握手和四次挥手过程,以及TIME_WAIT机制。最后讨论了TCP在实际应用中常见的粘包与拆包问题及其解决方案。
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
本文介绍了Spring Boot中静态资源的访问位置、如何进行静态资源访问测试、自定义静态资源路径和静态资源请求映射,以及如何处理自定义静态资源映射对index页面访问的影响。提供了两种解决方案:取消自定义静态资源映射或编写Controller来截获index.html的请求并重定向。
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
|
人工智能 JavaScript 前端开发
[译][AI OpenAI-doc] 库
我们提供了Python库和TypeScript / JavaScript库,支持各种运行时。安装后,您可以使用您的秘钥来运行库中提供的功能。微软的Azure团队也维护了与OpenAI API和Azure OpenAI服务兼容的库。此外,还有许多由社区构建和维护的其他库可供使用。请注意,OpenAI不验证这些项目的正确性或安全性。