Java递归基础案例-斐波纳契数列

简介: Java递归基础案例-斐波纳契数列

斐波纳契数列

/**

* Title: 斐波纳契数列

*

* Description: 斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……

* 在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)。

*

* 两种递归解法:经典解法和优化解法

* 两种非递归解法:递推法和数组法

*/

package Action;
public class test {
  public static void main(String[] args) {
    //循环可以很多次,但是最终只有一个返回值
    System.out.println(f(10));
  }
  public static int f(int n) {
    if (n == 1 || n == 2) { // 递归终止条件
      //1 1 2 3 5所以前两个数字都是1
      return 1; //是2或1就结束了,0不计算
    }
    //倒着计算
    System.out.println("此次递归数字到:"+n+",n-1:"+(n-1)+",n-2:"+(n-2));
    return f(n - 1) + f(n - 2); // 相同重复逻辑,缩小问题的规模
  }
}

计算结果:【55】


此次递归数字到:10,n-1:9,n-2:8

此次递归数字到:9,n-1:8,n-2:7

此次递归数字到:8,n-1:7,n-2:6

此次递归数字到:7,n-1:6,n-2:5

此次递归数字到:6,n-1:5,n-2:4

此次递归数字到:5,n-1:4,n-2:3

此次递归数字到:4,n-1:3,n-2:2

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:4,n-1:3,n-2:2

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:5,n-1:4,n-2:3

此次递归数字到:4,n-1:3,n-2:2

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:6,n-1:5,n-2:4

此次递归数字到:5,n-1:4,n-2:3

此次递归数字到:4,n-1:3,n-2:2

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:4,n-1:3,n-2:2

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:7,n-1:6,n-2:5

此次递归数字到:6,n-1:5,n-2:4

此次递归数字到:5,n-1:4,n-2:3

此次递归数字到:4,n-1:3,n-2:2

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:4,n-1:3,n-2:2

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:5,n-1:4,n-2:3

此次递归数字到:4,n-1:3,n-2:2

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:8,n-1:7,n-2:6

此次递归数字到:7,n-1:6,n-2:5

此次递归数字到:6,n-1:5,n-2:4

此次递归数字到:5,n-1:4,n-2:3

此次递归数字到:4,n-1:3,n-2:2

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:4,n-1:3,n-2:2

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:5,n-1:4,n-2:3

此次递归数字到:4,n-1:3,n-2:2

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:6,n-1:5,n-2:4

此次递归数字到:5,n-1:4,n-2:3

此次递归数字到:4,n-1:3,n-2:2

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:3,n-1:2,n-2:1

此次递归数字到:4,n-1:3,n-2:2

此次递归数字到:3,n-1:2,n-2:1

55


这个就开始有点难了啊,希望大家好好理解理解。  


相关文章
|
16天前
|
存储 Java
java用base64编码案例
Java Base64编码示例:导入`java.util.Base64`,设置字符串`originalString`,使用`Base64.getEncoder().encodeToString()`编码并存储到`encodedString`,打印编码后字符串。解码用`Base64.getDecoder().decode()`。
20 0
|
4天前
|
Java
java中递归实例
java中递归实例
15 0
|
4天前
|
Java C语言
详解java方法与递归
详解java方法与递归
10 3
|
4天前
|
设计模式 消息中间件 安全
【Java多线程】关于多线程的一些案例 —— 单例模式中的饿汉模式和懒汉模式以及阻塞队列
【Java多线程】关于多线程的一些案例 —— 单例模式中的饿汉模式和懒汉模式以及阻塞队列
9 0
|
12天前
|
Java 关系型数据库 测试技术
Java代码一键生成数据库文档(案例详解)
Screw是一个自动化数据库文档生成工具,能根据数据库表结构快速生成简洁、多格式(HTML、Word、Markdown)的文档,支持MySQL、MariaDB等多数据库。它使用Freemarker模板,允许用户自定义样式。依赖包括HikariCP数据库连接池和对应JDBC驱动。通过在Java代码或Maven插件中配置,可方便生成文档。示例代码展示了如何在测试用例中使用Screw。文档效果依赖于数据库中的表和字段注释。
|
13天前
|
自然语言处理 Java 编译器
【Java探索之旅】方法重载 递归
【Java探索之旅】方法重载 递归
10 0
|
15天前
|
Java
【专栏】Java 8 的 Streams 提供了一种处理数据集合的新方式,增强了代码的可读性和可维护性
【4月更文挑战第28天】Java 8 的 Streams 提供了一种处理数据集合的新方式,增强了代码的可读性和可维护性。本文介绍了 Streams 的基本概念,如从数据源创建 Stream,以及中间和终端操作。通过过滤、映射、归并、排序、分组等案例,展示了 Streams 的使用,包括并行 Streams 提高效率。学习 Streams 可以提升代码质量和效率,文章鼓励读者在实际开发中探索更多 Streams 功能。
|
16天前
|
Java Apache
java读取excel数据案例
Java代码示例使用Apache POI库读取Excel(example.xlsx)数据。创建FileInputStream和XSSFWorkbook对象,获取Sheet,遍历行和列,根据单元格类型(STRING, NUMERIC, BOOLEAN)打印值。需引入Apache POI库并确保替换文件路径。
11 1
|
18天前
|
SQL Java 关系型数据库
java 递归返回树形组织结构(附带树形菜单的搜索)
java 递归返回树形组织结构(附带树形菜单的搜索)
14 0
|
25天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
34 0
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例