ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JAVA数据结构--递归问题

2021-12-10 22:59:52  阅读:180  来源: 互联网

标签:JAVA 数列 递归 -- Hanoi int 算法 Fibonacci 数据结构


文章目录

目录

前言

一、递归算法是什么?

二、如何使用递归?

1.下面是求n!的递归函数。

2.Fibonacci数列的递归算法

3.比较经典的递归模型有Hanoi(汉诺)问题

总结

递归算法只要你能理解我下面给的三个算法模型就是so easy的,这其实就是个无限套娃的模型。把大的不断拆解成小问题。


提示:以下是本篇文章正文内容,下面案例可供参考

一、递归算法是什么?

递归算法通常是把一个大的复杂的问题层层转化为一个或多个与原问题相似的规模的问题来求解,用好递归可以大大减少算法代码量。

二、如何使用递归?

1.下面是求n!的递归函数。

代码如下(示例):

int fun(int n) {
    	 if(n==1)
    		 return 1;
    	 else 
    		 return fun(n-1)*n;
     }

2.Fibonacci数列的递归算法

Fibonacci数列:斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo 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)(≥ 2,∈ N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从 1963 年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果

我们可以通过代码知道这个数列的第n位是多少

代码如下(示例):

 int Fib(int n) {
    	 if(n==1||n==2)
    		 return 1;
    	 else
    		 return Fib(n-1)+Fib(n-2);
     }

例如:当Fib(5)时的,求解过程,方便大家理解。

 

3.比较经典的递归模型有Hanoi(汉诺)问题

     汉诺塔问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

代码如下(示例):

 public static void Hanoi(int n,char X,char Y,char Z) {
    	 if(n==1)
    		 System.out.printf("将第%d个盘片从%c移动到%c\n",n,X,Z);
    	 else 
    	 {  Hanoi(n-1,X,Z,Y);
    	 System.out.printf("将第%d个盘片从%c移动到%c\n",n,X,Z);
    		 Hanoi(n-1,Y,X,Z);
    	 }

汉诺塔问题模型


 

总结

层层递进,简单的模型逐渐进阶,相信你的努力能够得到收获!!!

 

标签:JAVA,数列,递归,--,Hanoi,int,算法,Fibonacci,数据结构
来源: https://blog.csdn.net/sdf564sd5/article/details/121866088

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有