网站套程序,网站怎么做图片动态图片不显示了,google浏览器下载安装,html 网站建设中1、递归算法定义递归算法是将重复问题分解为同类的子问题而解决问题的方法#xff0c;其核心思想是分治策略。简单来说就是自己调用自己。直到达到退出递归的条件#xff0c;则完成递归。2、递归的步骤1、找整个递归的终止条件#xff1a;递归应该在什么时候结束#xff1f… 1、递归算法定义递归算法是将重复问题分解为同类的子问题而解决问题的方法其核心思想是分治策略。简单来说就是自己调用自己。直到达到退出递归的条件则完成递归。2、递归的步骤1、找整个递归的终止条件递归应该在什么时候结束2、找返回值应该给上一级返回什么信息3、本级递归应该做什么在这一级递归中应该完成什么任务3、递归的优点和缺点优点递归的核心思想就是将一个大问题拆解成一个小问题然后将小问题再次拆解层层拆分从而简化问题的实现。从而达到简化重复的代码让程序变得更加简洁。缺点使用递归算法时每次方法的调用都需要在栈中开辟出一个空间保存相关数据频繁的压栈、弹栈会导致效率变低。4、递归的案例4.1 阶乘的算法 // 阶乘的递归实现 public static long f(int n){ if(n 1) // 结束递归终止条件 return 1; return n*f(n-1); // 相同重复逻辑缩小问题的规模 }4.2 斐波纳契数列斐波纳契数列又称黄金分割数列指的是这样一个数列1、1、2、3、5、8、13、21、……在数学上斐波纳契数列以如下被以递归的方法定义F00F11FnF(n-1)F(n-2)n2n∈N*。public static int fibonacci(int n) { if (n 1 || n 2) { // 递归终止条件 return 1; // 简单情景 } return fibonacci(n - 1) fibonacci(n - 2); // 相同重复逻辑缩小问题的规模}4.3 汉诺塔问题/** * Title: 汉诺塔问题 * Description:古代有一个梵塔塔内有三个座A、B、CA座上有64个盘子盘子大小不等大的在下小的在上。 * 有一个和尚想把这64个盘子从A座移到C座但每次只能允许移动一个盘子并且在移动过程中3个座上的盘子始终保持大盘在下 * 小盘在上。在移动过程中可以利用B座。要求输入层数运算后输出每步是如何移动的。 * */public class HanoiTower { /** * description 在程序中我们把最上面的盘子称为第一个盘子把最下面的盘子称为第N个盘子 * author rico * param level盘子的个数 * param from 盘子的初始地址 * param inter 转移盘子时用于中转 * param to 盘子的目的地址 */ public static void moveDish(int level, char from, char inter, char to) { if (level 1) { // 递归终止条件 System.out.println(从 from 移动盘子 level 号到 to); } else { // 递归调用将level-1个盘子从from移到inter(不是一次性移动每次只能移动一个盘子,其中to用于周转) moveDish(level - 1, from, to, inter); // 递归调用缩小问题的规模 // 将第level个盘子从A座移到C座 System.out.println(从 from 移动盘子 level 号到 to); // 递归调用将level-1个盘子从inter移到to,from 用于周转 moveDish(level - 1, inter, from, to); // 递归调用缩小问题的规模 } } public static void main(String[] args) { int nDisks 30; moveDish(nDisks, A, B, C); }4.4 二叉树深度 public static int getTreeDepth(Tree t) { // 树为空 if (t null) // 递归终止条件 return 0; int left getTreeDepth(t.left); // 递归求左子树深度缩小问题的规模 int right getTreeDepth(t.left); // 递归求右子树深度缩小问题的规模 return left right ? left 1 : right 1; } IT技术分享社区个人博客网站https://programmerblog.xyz文章推荐程序员效率画流程图常用的工具程序员效率整理常用的在线笔记软件远程办公常用的远程协助软件你都知道吗51单片机程序下载、ISP及串口基础知识硬件断路器、接触器、继电器基础知识 1、递归算法定义递归算法是将重复问题分解为同类的子问题而解决问题的方法其核心思想是分治策略。简单来说就是自己调用自己。直到达到退出递归的条件则完成递归。2、递归的步骤1、找整个递归的终止条件递归应该在什么时候结束2、找返回值应该给上一级返回什么信息3、本级递归应该做什么在这一级递归中应该完成什么任务3、递归的优点和缺点优点递归的核心思想就是将一个大问题拆解成一个小问题然后将小问题再次拆解层层拆分从而简化问题的实现。从而达到简化重复的代码让程序变得更加简洁。缺点使用递归算法时每次方法的调用都需要在栈中开辟出一个空间保存相关数据频繁的压栈、弹栈会导致效率变低。4、递归的案例4.1 阶乘的算法 // 阶乘的递归实现 public static long f(int n){ if(n 1) // 结束递归终止条件 return 1; return n*f(n-1); // 相同重复逻辑缩小问题的规模 }4.2 斐波纳契数列斐波纳契数列又称黄金分割数列指的是这样一个数列1、1、2、3、5、8、13、21、……在数学上斐波纳契数列以如下被以递归的方法定义F00F11FnF(n-1)F(n-2)n2n∈N*。public static int fibonacci(int n) { if (n 1 || n 2) { // 递归终止条件 return 1; // 简单情景 } return fibonacci(n - 1) fibonacci(n - 2); // 相同重复逻辑缩小问题的规模}4.3 汉诺塔问题/** * Title: 汉诺塔问题 * Description:古代有一个梵塔塔内有三个座A、B、CA座上有64个盘子盘子大小不等大的在下小的在上。 * 有一个和尚想把这64个盘子从A座移到C座但每次只能允许移动一个盘子并且在移动过程中3个座上的盘子始终保持大盘在下 * 小盘在上。在移动过程中可以利用B座。要求输入层数运算后输出每步是如何移动的。 * */public class HanoiTower { /** * description 在程序中我们把最上面的盘子称为第一个盘子把最下面的盘子称为第N个盘子 * author rico * param level盘子的个数 * param from 盘子的初始地址 * param inter 转移盘子时用于中转 * param to 盘子的目的地址 */ public static void moveDish(int level, char from, char inter, char to) { if (level 1) { // 递归终止条件 System.out.println(从 from 移动盘子 level 号到 to); } else { // 递归调用将level-1个盘子从from移到inter(不是一次性移动每次只能移动一个盘子,其中to用于周转) moveDish(level - 1, from, to, inter); // 递归调用缩小问题的规模 // 将第level个盘子从A座移到C座 System.out.println(从 from 移动盘子 level 号到 to); // 递归调用将level-1个盘子从inter移到to,from 用于周转 moveDish(level - 1, inter, from, to); // 递归调用缩小问题的规模 } } public static void main(String[] args) { int nDisks 30; moveDish(nDisks, A, B, C); }4.4 二叉树深度 public static int getTreeDepth(Tree t) { // 树为空 if (t null) // 递归终止条件 return 0; int left getTreeDepth(t.left); // 递归求左子树深度缩小问题的规模 int right getTreeDepth(t.left); // 递归求右子树深度缩小问题的规模 return left right ? left 1 : right 1; } IT技术分享社区个人博客网站https://programmerblog.xyz文章推荐程序员效率画流程图常用的工具程序员效率整理常用的在线笔记软件远程办公常用的远程协助软件你都知道吗51单片机程序下载、ISP及串口基础知识硬件断路器、接触器、继电器基础知识