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

Java 递归计算斐波那契数列指定位置上的数字

Java 递归计算斐波那契数列指定位置上的数字

  • 一、原理
  • 二、代码实现
  • 三、运行结果

一、原理

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

在数学上,这一数列以如下递推的方法定义:F(0)=1,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)

二、代码实现

要计算第 n 个斐波那契数列的数字,我们可以使用以下递归函数:

public class MyClass {public static void main(String[] args){int n = 10;System.out.println("斐波那契数列第 " + n + " 个数为 " + Fibonacci(n));}//递归  n代表第几个数public static int Fibonacci(int n) {//前两个数为 1//第三个数及后面的数为前面两数之和//如果输入的 n 不合法将返回 -1if (n == 1 || n == 2) {return 1;} else if (n > 2) {return Fibonacci(n - 1) + Fibonacci(n - 2);} else {return -1;}}}

时间复杂度:

  • 最好情况下,当 n 等于 12 时,直接返回 1,时间复杂度为 O(1)
  • 最坏情况下,当 n 大于 2 时,需要递归调用 Fibonacci() 函数计算前两个数的和,时间复杂度为 O(2^n)。因为每次递归调用会产生两个子问题,每个子问题又会产生两个更小的子问题,以此类推,直到递归到 n 等于 12
  • 平均情况下,时间复杂度也是 O(2^n),因为每个数都需要通过递归调用计算得到。

空间复杂度:

  • 由于递归调用会在堆栈中保存每次调用的局部变量和返回地址,所以空间复杂度取决于递归的深度。在最坏情况下,递归深度为 n,所以空间复杂度为 O(n)

综上所述,该递归实现的斐波那契数列函数的时间复杂度为指数级的 O(2^n),空间复杂度为线性的 O(n)。由于指数级的时间复杂度,在计算较大的斐波那契数时,递归实现会变得非常慢。

三、运行结果

斐波那契数列第 10 个数为 55
http://www.lryc.cn/news/99189.html

相关文章:

  • ai数字人透明屏的应用场景有哪些?
  • 一、1、Hadoop的安装与环境配置
  • 剑指YOLOv7改进最新MPDIoU损失函数(23年7月首发论文):论文实测YOLOv7模型涨点,超越现有多种G/D/C/EIoU,高效准确的边界框回归的损失
  • 前端JavaScript面试100问(上)
  • C语言第九课------------------数组----------------C中之将
  • MySQL的安装
  • 在Chrome(谷歌浏览器)中安装Vue.js devtools开发者工具及解决Vue.js not detected报错
  • 用Python实现概率矩阵分解(PMF)算法在MovieLens ml-100k数据集上构建精确的推荐系统:深入理解GroupLens数据的操作
  • WPF icon的设置
  • 使用frp中的xtcp映射穿透指定服务实现不依赖公网ip网速的内网穿透p2p
  • 2023-07-28 LeetCode每日一题(并行课程 III)
  • 8.11 PowerBI系列之DAX函数专题-TopN中实现N的动态
  • 后端性能测试的类型
  • 关闭Tomcat的日志输出
  • express 路由匹配和数据获取
  • 62 | Python 操作 PDF
  • [SQL挖掘机] - 左连接: left join
  • Android 之 使用 SoundPool 播放音效
  • 防火墙的ALG、NAT、双机热备知识点详解
  • 传染病模型
  • 一百三十七、Hive——HQL运行报错(持续更新中)
  • Spring Boot配置加密实践
  • SwiftUI-基础
  • vue。cli怎么使用自定义组件,会有哪些问题
  • linux----vim的使用
  • 95. Python基础教程:异常处理try...except语句
  • 详解rocketMq通信模块升级构想
  • 【BOOST程序库】对字符串的处理
  • (学习笔记-内存管理)虚拟内存
  • JVM理论(七)性能监控与调优