数据结构 - 递归
关注 “弋凡”(YiFan)微信公众号吧 记录简单笔记 做你的最爱
递归介绍
一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法
当边界条件不满足时,递归前进;当边界条件满足时,递归返回
斐波那契数列
介绍
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)
代码
public class Recursive {public static void main(String[] args) {// 递归 --- 打印斐波那契数列 1 1 2 3 5 8 13 21 ...前2项数据和System.out.println(new Recursive().Fibonacci(6));}// 打印第n项斐波那契数列数据public int Fibonacci(int i){if(i==1 || i==2 ){return 1;}else {return Fibonacci(i-1)+Fibonacci(i-2);}}}
汉诺塔
介绍
汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
代码
public class Recursive {public static void main(String[] args) {HanoiTest.hanoi(3,'A','B','C');}
}class HanoiTest{/*** @param n 共有 n 个盘子* @param from 开始的柱子* @param in 中间的柱子* @param to 目标柱子*/public static void hanoi(int n,char from,char in ,char to){// 只有一个盘子if (n == 1){System.out.println("第1个盘子从"+from+"移动到"+to);}else { // 无论有多少盘子 都认为只有2个盘子,上面的所有盘子和最下面的一个盘子// 移动上面的所有盘子到中间柱子上hanoi(n-1,from,to,in);// 移动下面的盘子System.out.println("第"+n+"个盘子从"+from+"移动到"+to);// 把上面的所有盘子从中间位置移动到目标位置hanoi(n-1,in,from,to);}}
}
快来关注“弋凡”微信公众号吧
数据结构 - 递归相关推荐
- 数据结构---递归实现十进制装换为任意进制
数据结构-递归实现十进制装换为任意进制 代码: #include <stdio.h> #include <stdlib.h> #include"stack.h&quo ...
- C++两个函数可以相互递归吗_通俗讲:数据结构递归思想
通俗讲:数据结构递归思想 脑容量有限,拒绝花里胡哨 一个递归求阶乘的例子 #如5的阶乘 f(6)=6*5*4*3*2*1 def f(int n) {if n <= 0 : return 1re ...
- 数据结构 递归讲解
1. 递归的定义 定义好简单了, 如果1个函数直接或间接地调用自己本身, 我们就说它是1个递归. 2. 不同函数是怎样互相调用的. 严蔚敏编写的的数据结构教材中写过这段话: 当1个函数(A)的运行期间 ...
- C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)
本节主要说了递归的设计和算法实现,以及递归的基本例程斐波拉契数列.strlen的递归解法.汉诺塔和全排列递归算法. 一.递归的设计和实现 1.递归从实质上是一种数学的解决问题的思维,是一种分而治之的思 ...
- 数据结构 - 递归 回溯算法(八皇后问题)
游戏地址自己写完了可以根据结果去测试一下. 算法分析 八皇后问题算法思路分析 1)第一个皇后先放第一行第一列 2)第二个皇后放在第二行第一列.然后判断是否OK, 如果不OK,继续放在.第二列.第三列. ...
- python数据结构递归树_python数据结构(对称二叉树递归和迭代)
1.题目描述 给定一个二叉树,检查它是否是镜像对称的. 2.代码详解 2.1 递归写法 # Definition for a binary tree node. class TreeNode(obje ...
- 二叉树的递归遍历算法c语言 数据结构,递归创建二叉树c语言实现+详细解释
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 void CreatBiTree(BiTree T) { char a; scanf("%c",&a); if(a=='@') ...
- 数据结构 —— 递归和树
概况: 递归和分治 递归中用到了分治法. 分治法的思想简单概括就是"分而治之". 递归实际使用"栈"来实现的. 递归包括递归方程.临界条件: EX:实现随机斐波 ...
- 数据结构::递归时间复杂度的计算
开篇前言:为什么写这篇文章?笔者目前在学习各种各样的算法,在这个过程中,频繁地碰到到递归思想和分治思想,惊讶于这两种的思想的伟大与奇妙的同时,经常要面对的一个问题就是,对于一个给定的递归算法或者用分治 ...
最新文章
- PyTorch 1.8来了!正式支持AMD GPU,炼丹不必NVIDIA
- C++和MATLAB混合编程-DLL篇
- python-封装方法用于读取excel
- Java面试宝典系列之基础面试题-常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- 二十八、Pyspider 爬取链家网
- Android Intent机制详解
- session,cookie和token,以及负载均衡
- LeetCode 1394. 找出数组中的幸运数(map计数)
- hibernate组件映射
- 拒绝低效办公,9个超实用职场必备国产软件推荐
- 关于delphi2010读取MySQL数据库TEXT类型乱码的解决方案
- phpSQLiteAdmin - 基于Web的SQLite数据库管理工具 - OPEN 开发经验库
- Linux系统安装Oracle 10g
- 2018金山WPS实习面试
- OPENGL 简单图形绘制
- 长白县积极建设精准扶贫云平台
- 线程池的核心线程会销毁吗?
- 派森编程软件python有什么用_派森Python下载
- 学校计算机机房网络设备,[学校计算机机房的维护]学校计算机机房硬件设备清单...
- 企业微信oauth认证_微信企业号OAuth2验证接口实例(使用SpringMVC)