当前位置: 首页 > news >正文

go 中的斐波那契数实现以及效率比较

package mainimport ("fmt""math/big""time"
)// FibonacciRecursive 使用递归方法计算斐波那契数列的第n个数
func FibonacciRecursive(n int) *big.Int {if n <= 1 {return big.NewInt(int64(n))}return new(big.Int).Add(FibonacciRecursive(n-1), FibonacciRecursive(n-2))
}// FibonacciIterative 使用迭代方法计算斐波那契数列的第n个数
func FibonacciIterative(n int) *big.Int {if n <= 1 {return big.NewInt(int64(n))}a := big.NewInt(0)b := big.NewInt(1)for i := 2; i <= n; i++ {a, b = b, new(big.Int).Add(a, b)}return b
}func main() {n := 30 // 计算第100个斐波那契数// 测量递归方法的执行时间startRecursive := time.Now()resultRecursive := FibonacciRecursive(n)durationRecursive := time.Since(startRecursive)// 测量迭代方法的执行时间startIterative := time.Now()resultIterative := FibonacciIterative(n)durationIterative := time.Since(startIterative)// 打印结果和执行时间fmt.Printf("第%d个斐波那契数(递归): %s\n", n, resultRecursive)fmt.Printf("递归方法执行时间: %v\n", durationRecursive)fmt.Printf("第%d个斐波那契数(迭代): %s\n", n, resultIterative)fmt.Printf("迭代方法执行时间: %v\n", durationIterative)// 验证两种方法的结果是否相同if resultRecursive.Cmp(resultIterative) == 0 {fmt.Println("两种方法的结果相同")} else {fmt.Println("错误:两种方法的结果不同")}
}

结果:第40个斐波那契数(递归): 102334155
递归方法执行时间: 20.1240473s
第40个斐波那契数(迭代): 102334155
迭代方法执行时间: 0s
两种方法的结果相同

http://www.lryc.cn/news/465289.html

相关文章:

  • 基于ASP.NET的小型超市商品管理系统
  • spdlog学习记录
  • linux替换某个文件的某段内容命令
  • 什么是SQL注入攻击?如何防止呢?
  • consumer 角度讲一下i2c外设
  • 面试经典150题刷题记录
  • 【HarmonyOS NEXT】实现保存base64图片到图库
  • 开题答辩最怕被问什么?教你用ChatGPT轻松准备,稳拿高分!
  • Unity3D功耗和发热分析与优化详解
  • 深度学习中的掩码介绍
  • rust高级进阶总结
  • 整理—计算机网络
  • 分布式数据库环境(HBase分布式数据库)的搭建与配置
  • 100个JavaWeb(JDBC, Servlet, JSP)毕业设计选题
  • 05 go语言(golang) - 常量和条件语句
  • 【设计模式】深入理解Python中的适配器模式(Adapter Pattern)
  • RuoYi-Vue若依框架-后端设置不登陆访问(白名单)
  • C语言初阶小练习2(三子棋小游戏的实现代码)
  • 金融行业合同管理如何利用AI技术进行风险预警?
  • 世界数字农业盛宴与技术探索,25年3月聚焦世界灌溉科技大会
  • 二百六十九、Kettle——ClickHouse清洗ODS层原始数据增量导入到DWD层表中
  • Maya---骨骼绑定
  • 携手并进,智驭教育!和鲸科技与智谱 AI 签署“101 数智领航计划”战略合作协议
  • 牛客周赛63
  • git restore恢复删除文件
  • MacOS13虚拟机VMware Workstation Pro 16安装
  • docker 数据管理,数据持久化详解 一
  • 【ios】使用TestFlight将app分发给测试人员(超详细)
  • 证件照小程序源码,前后端稳定运行
  • java白嫖同事的从身份证里面提取省市区地址详细信息的工具类代码