递归-java实现斐波那契数列

斐波那契数列(Java递归) 使用Java的简单递归实现斐波那契数列 阅读详情
  • 之前的例子是每个递归函数只包含一个自身的调用,这称之为single recursion

  • 如果每个递归函数例包含多个自身调用,称之为multi recursion

递归的次数(时间复杂)也符合斐波那契规律,2*f(n+1)-1

时间复杂度推导过程:

package com.tfq.arithmetic.recursion;

/**
 * @date: 2024/05/28/8:41
 * @description: 斐波那契数列第N项
 */
public class E06Fibonacci {

	public static int f(int n) {
		if(n == 0) {
			return 0;
		}
		if(n == 1) {
			return 1;
		}
		int x = f(n - 1);
		int y = f(n - 2);
		return x + y;
	}


	public static void main(String[] args) {
		for(int i = 0; i <= 5; i++) {
			System.out.println(f(i));
		}

	}
}

兔子繁殖和青蛙路楼梯也属于斐波那契数列。

兔子问题

现有一对小兔子,第二个月长大为大兔子,第三个月生下一对小兔子,小兔子以此类推,问第N个月后一共有多少对兔子?

问题分析

该问题完美符合斐波那契数列,从第三个月开始,每个月的兔子总对数为前两月的对数之和,仔细分析发现,每月薪增对数也满足斐波那契数列,请看下图:

public static int fibo(int n) {
		if(n == 1 || n == 2) {
			return 1;
		}

		int x = fibo(n - 1);
		int y = fibo(n - 2);
		return x + y;
	}

青蛙路楼梯用f(n)方法即可实现。for循环要从0开始。

FPGA实战 —— 基于UART的多设备串口通信系统设计 本文深入探讨了基于FPGA的多设备UART串口通信系统设计。针对工业控制与物联网应用中一对多通信的需求,文章对比了共享总线式、多路独立式等硬件连接方案,并详细阐述了可配置UART IP核、波特率自适应算法以及多路数据仲裁与分发逻辑等核心设计要点。最后,通过一个四传感器采集节点的实战案例,展示了从硬件连接到Verilog代码实现的完整系统构建过程。 阅读详情

相关推荐

嵌入式存储入门:Emmc控制器与设备工作原理全解析(附Synopsys/Arasan架构图)

本文深入解析了嵌入式系统中Emmc控制器与设备的工作原理,重点剖析了其作为CPU与存储设备桥梁的核心架构。通过对比Synopsys和Arasan两家主流IP厂商的控制器设计,详细阐述了DMA引擎与FIFO缓冲模块如何协同工作以提升数据传输效率,并提供了从硬件PCB布局到驱动调试的实战指南,帮助硬件工程师与开发者优化系统性能。

weixin_29248653的博客 145

JAVA——斐波那契数列(递归)

主题:斐波那契数列 斐波那契数列(Fibonacci sequence):又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义: F(0)=0,F(1)=1,F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*) 问题:求第N项的斐波那契数列 思路:F(0)=0,F(1)=1,F(n)=F(

SwitchD的博客 1万+

Figma到Axure一键转换:Axhub Extension保姆级教程(含常见问题解决)

本文提供Axhub Extension的保姆级教程,详细讲解如何将Figma设计稿一键转换为Axure高保真交互原型。教程涵盖环境准备、核心转换四步走流程,并重点解决JSON导入失败、样式错乱、复杂组件转换等常见问题,旨在打通Figma与Axure之间的数据孤岛,大幅提升设计师和产品经理的原型制作效率。

night的博客 1575

java实现斐波那契数列(递归、迭代、流)

第一个斐波那契数的值是0,第四个斐波那契数的值是2。

一起coding,一起嗨。 1999

提升仿真效率:Synopsys VCS高级编译选项优化技巧(2023最新版)

本文深入探讨了Synopsys VCS 2023版本中的高级编译选项优化技巧,帮助工程师提升仿真效率。通过并行编译、智能代码分析、精准覆盖率采样等策略,结合真实案例展示如何显著缩短仿真周期并优化资源使用,适用于数字芯片验证和大型SoC设计。

weixin_30338481的博客 113

AD620仪表放大器模块实战:从双电源切换到单电源供电的完整指南(附原理图)

本文深入探讨了AD620仪表放大器模块从双电源切换到单电源供电的常见陷阱与正确方案。通过解析AD620的内部架构与电气特性,指出其“天生”依赖双电源,简单的跳线改装会导致芯片损坏或失效。文章提供了基于AD623芯片的真正单电源替代方案,并附有原理图与实战波形对比,为便携式设备设计提供了完整指南。

weixin_29231027的博客 364

递归实现斐波那契数列(Java)

(Java)利用递归实现斐波那契数列的查找.

weixin_50584850的博客 6943

Arduino IDE 2.3.2 配置 UNO R4 WIFI 开发环境避坑指南(附LED矩阵驱动测试)

本文详细介绍了如何在Arduino IDE 2.3.2中配置UNO R4 WIFI开发环境,并提供了LED矩阵驱动的实战指南。从开发环境搭建到硬件连接,再到LED矩阵的初始化和弹球动画实现,手把手教你避开常见配置陷阱,最终实现流畅的动画效果。特别适合刚接触UNO R4 WIFI的开发者快速上手。

weixin_28675839的博客 219

Java实现“斐波那契数列”的两种方式——数组与优化递归

本文使用了三种方式实现了斐波那契数列——数组、递归、优化递归。 此文重点是对斐波那契数列的实现方式效率的比较及优化。 一、数组实现斐波那契数列 测试代码: public class ArrayTest { public static void main(String[] args) { // 开始计时 long start = System.currentTimeMillis(); // 斐波那契 long[] array = new

专注于优雅与性能的未来架构师 6347

eDP V1.4协议介绍

eDP的全称是Embedded DisplayPort嵌入式显示端口,主要应用与短距离系统内应用,例如手机、一体式台式机等。eDP V1.4b是基于DP V1.3标准制作完成,但因应用场景的不同,还是有很多区别。电压摆幅不同,eDP相对较低;eDP功耗相对较低;DP有线材和连接器的要求,eDP没有明确要求;AUX通道电路设计不同(相对DP取消了AC耦合电容和100KΩ/1MΩ的上下拉电阻):典型应用场景;

qflook的博客 4298

RK+linux教程:RK3588 RGA硬件加速在YOLOv5图像预处理中的深度应用教程

摘要: 本教程深入解析了RK3588芯片的RGA硬件加速器在YOLOv5图像预处理中的应用。通过专用硬件设计,RGA支持图像缩放、边界填充等核心操作,结合零拷贝技术显著提升处理效率。重点分析了LetterBox算法的RGA实现,包括参数计算、边界填充和性能优化,并与传统CPU处理对比,展示了RGA在高分辨率图像处理中的优势。教程还提供了统一的预处理接口设计,便于在OpenCV与RGA方案间灵活切换,为RK3588平台的深度学习部署提供实用优化方案。

LXY_LOVE36的博客 974

Python斐波那契数列(递归、循环)

Python斐波那契数列

qq_63676151的博客 2441

YOLOv11缝合添加注意力机制:添加YOLO-Face的SEAM到并行通道空间注意力机制【附代码】

在目标检测的实际应用中,物体遮挡是一个严重影响检测精度的难点。本文将基于YOLOv11架构,探索融合YOLO-Face中提出的SEAM注意力机制以提升对遮挡物体的感知能力,并在此基础上提出一种轻量化双路径并行注意力机制C2PSA,进一步提升检测性能。

一键难忘的博客 1527

Java使用递归求解斐波那契数列

斐波那契数列:指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…… 注意:此时我们需要注意的是该数列第一项是0,第二项是1,接下来的每一项则是前两项之和 思路:这个题我们需要用到递归的方法,首先我们需要先解决数列前两项已知的项,我们首先定义一个静态函数feibonaqie(), 在函数当中,我们先利用一个if语句去判断前两项,如

qq_23587709的博客 7098

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

斐波那契数列非递归 java_斐波那契数列递归与非递归实现

我们知道斐波那契数列的实现方式是,下标为1或者2时,其值就是1,当下标大于3时,则f(n) = f(n-1) + f(n-2);下面编写了递归与非递归两种实现方式(Java代码):public class Fibonacci {public static void main(String []args) {System.out.println(FibonacciLoop(40));System.o...

weixin_35788914的博客 545

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

使用java递归计算斐波那契数列

前言: 斐波那契数列(Fibonaccisequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以 递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2...

_William_Cheung的博客 9634

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java 递归算法之斐波那契数列第 N 项

斐波那契数列(Fibonacci sequence),也称之为黄金分割数列,由意大利数学家列昂纳多・斐波那契(Leonardo Fibonacci)提出。斐波那契数列指的是这样的一个数列:1、1、2、3、5、8、13、21、34、……,这个数列从第 3 项开始,每一项都等于前面两项之和。在数学上,斐波那契数列可以被递推的方法定义如下: F(1)=1,F(2)=1,F(n)=F(n – 1)+F(n – 2)(n≥ 3,n∈ N*) 1.斐波那契数列的递归终止条件 显然易见,通过观察斐波那契数列的定...

爱干饭的猿的博客 2895

Java斐波那契数列非递归(迭代)与递归实现

问题描述 斐波那契数列指的是这样一个数列: 1,1,2,3,5,8,13,21… 这个数列从第3项开始,每一项都等于前两项之和。 设an为该数列的第n项(),那么这句话可以写成如下形式: 递归实现 import java.util.Scanner; public class java1206 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);

傻子编程 553

Java利用函数递归对“斐波那契数列”的实现

“斐波那契数列” 什么是“斐波那契数列”呢? 斐波那契数列又称黄金分割列数,指的是这样一个数列“ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…”这个数列从第3项开始,每一项都等于前两项之和。 利用函数实现“斐波那契数列”(递归)...

奈何的人生 750

java中利用递归求斐波那契数列

输入你要求的第几个斐波那契数列的值,打印出对应的值(利用递归) import java.util.Scanner; class TestFibonacci{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入想要得到的第几个斐波那契数列:"); int num = sc.nextInt(); System.out.println(fibona

zhoutianhua的博客 692

详解java递归求解斐波那契数列第n项

文章目录问题一、什么是斐波那契数列?二、解题思路三、实战代码后记 问题 求斐波那契数列的第n项。(迭代实现) 提示:以下是本篇文章正文内容,下面案例可供参考 一、什么是斐波那契数列? 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义: F(0)=0,F(.

m0_57180439的博客 5234

java递归实现斐波那契数列

/** *create Date:2016-12-23 *modified Date:2016-12-23 *modified by:shark *Description:斐波那契数列 **/ public class Shulie{ public static long digui(int n,int sum,int before,int before1){ if(

qq_35719697的博客 1621

JAVA递归实现斐波那契数列

斐波那契数列 1 1 2 3 5 8 13 21 34 一个数等于前两个数之和 计算斐波那契数列第n个值并打印出来 public class practice { public static void main(String[] args) { practice text = new practice(); System.out.println(text.method(7)); } //递归斐波那契数列 public int method (int n) { if(n==1) { retu.

Bear的博客 789

mysql斐波那契数列_JAVA递归与非递归实现斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci[1] )以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)在...

weixin_31633071的博客 281

Java——斐波那契数列问题——递归

1.用Java解决斐波那契数列问题 1.1思路 斐波那契数列 0 1 1 2 3 5 8 13 21 34 55 89… 可知从第三项开始所知结果皆是前两项的和, 即设变量fibonacci();设参数n 用递归的放法来解决问题。 递归就是将问题拆分为若干个小问题,不断地向下递进,将计算问题变得简单,直至无法继续推进,且直接能得到结果,也叫到达出口。再由出口的结果,逐层向上回归,依次计算每一层的结...

y_fCrazy的博客 548

斐波那契数列递归与非递归实现(JAVA语言描述)

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci[1] )以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)在

莫贤彬的博客 1万+
上一篇: java 递归冒泡排序、插入排序、二分法查找的实现
下一篇: 解决mybatis/mybatis plus报错:Invalid bound statement (not found) 的方法汇总
developerFBI
博客等级 码龄15年 174粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值