递归思想:

从最外部到达最里部,从最里部开始解决问题,直到解决完最外部的问题。


案例1:

求ABCDE的所有排序


public class Main {public static void main(String[] args) {char[] data = "ABCDE".toCharArray();digui(data, 0);}private static void digui(char[] data, int curData) {if (curData == data.length) {for (int i = 0; i < data.length; i++)System.out.print(data[i]);System.out.println();}for (int i = curData; i < data.length; i++) {{char temp = data[curData];data[curData] = data[i];data[i] = temp;}digui(data, curData + 1);{char temp = data[curData];data[curData] = data[i];data[i] = temp;}}}}

案例2

求出两个字符串共同最大子集的长度


public class Main {public static void main(String[] args) {int num=digui("acabczdd","abcsf");System.out.println(num);}private static int digui(String s1, String s2) {if(s1.length()==0||s2.length()==0) return 0;if(s1.charAt(0)==s2.charAt(0))return digui(s1.substring(1), s2.substring(1))+1;elsereturn Math.max(digui(s1.substring(1),s2 ), digui(s1, s2.substring(1)));}}

案例3:

使用递归打印杨辉三角形


import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();for (int i = 0; i < n; i++) {for (int j = 0; j <= i; j++) {System.out.print(digui(i, j) + " ");}System.out.println();}}private static int digui(int m, int n) {if (n == 0)return 1;if (m == n)return 1;return digui(m - 1, n) + digui(m - 1, n - 1);}}

案例4

现在有3个红球,2个白球,它们有多少种排列方式

public class Main {public static void main(String[] args) {System.out.println(digui(3,2));}private static int digui(int m, int n) {if(m==0||n==0) return 1;return digui(m-1,n)+digui(m,n-1);}}

案例5

给出一个数字,将这个数字的所有和的表现形式展示出来

输出案例:
7=7
7=6+1
7=5+2
7=5+1+1
7=4+3
7=4+2+1
7=4+1+1+1
7=3+3+1
7=3+2+2
7=3+2+1+1
7=3+1+1+1+1
7=2+2+2+1
7=2+2+1+1+1
7=2+1+1+1+1+1
7=1+1+1+1+1+1+1

public class Main {public static int num;public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();num = n;int[] a = new int[100];digui(n, a, 0);}private static void digui(int n, int[] a, int k) {if (n <= 0) {System.out.print(num + "=");for (int i = 0; i < k; i++) {if (i == k - 1) {System.out.print(a[i]);} else {System.out.print(a[i] + "+");}}System.out.println();return;}for (int i = n; i > 0; i--) {if (k > 0 && i > a[k - 1])continue;a[k] = i;digui(n - i, a, k + 1);}}}

JAVA:基础递归算法大杂烩相关推荐

  1. Java基础篇(03):流程控制语句,和算法应用

    本文源码:GitHub·点这里 || GitEE·点这里 一.分支语句 流程控制语句对任何一门编程语言都是非常重要的,Java中基于流程控制程序执行的不同步骤和代码块. 1.IF条件 IF条件语句会根 ...

  2. Java基础知识(一),打好基础才能写出高质量代码

    前沿:不管工作多久,基础永远是最重要的,好多大厂看的就是基础好不好,所以写代码的同时,基础知识还是要去理解和记忆的,坚持每天来看一点 Java基础.语法: java面向对象的特征有哪些方面? 1.抽象 ...

  3. Java基础——狂神说

    Java基础--狂神说 文章目录 Java基础--狂神说 一.第一章--基础语法 1.标识符 2.变量.数据类型.常量 2.1.变量的分类 2.1.1.按数据类型分类 2.1.1.1.浮点类型 2.1 ...

  4. java语言基础总结ppt_我的java基础知识总结ppt

    昨天加上今天,我把java基础知识总结的ppt做好了,其中包括: 1基础阶段所有项目展示 2.阶段自我总结,自己的提升和不足 3.后期学习规划 我在ppt里面把几个有代表性项目展示了出来,并且描述了我 ...

  5. Java 基础巩固:再谈抽象类和接口

    文章出自:安卓进阶学习指南 主要贡献者: Milo Struggle shixinzhang 读完本文你将了解: 背景介绍 什么是抽象类和接口 特点与区别 抽象类的特点 接口的特点 栗子 小结 如何选 ...

  6. java基础技能清单

    一.java基础 1.java集合框架学习,数据基本类型学习,Integer缓存等问题,常见面试题.对ArrayList和Collecttion.binarySerch()源码进行学习.DelayQu ...

  7. Java基础之扩展特性

    Java基础之扩展特性 一.泛型 二.包装类 三.递归算法 四.异常处理 五.自定义异常 六.常用类 七.String 的正则表达式 八.Java 和 C++的区别 九.TCP/IP 初识 十.Soc ...

  8. 1 Java基础后端-基础语法

    1 Java基础后端-基础语法 编程语言介绍 java介绍 文章目录 1 Java基础后端-基础语法 1.1. 计算机语音发展 1.2. Java和C比较 1.3. windows常用DOS 1.4. ...

  9. 【狂神说笔记——Java基础03-方法】

    Java基础03-方法 方法 1.何谓方法? 在前面几个章节中我们经常使用到 System.out.println(),那么它是什么呢? println() 是一个方法. System 是系统类. o ...

最新文章

  1. Ubuntu中的minicom
  2. linux的strace命令
  3. 点云数据的类型主要分为_点云学习在自动驾驶中的研究概述
  4. vue 输入框限制3位小数_vue+element 中 el-input框 限制 只能输入数字及几位小数(自定义)和输入框之键盘...
  5. allgro显示网络名称_相同的4G网络,为什么你的网速总是慢?知道这3点原因,网速翻倍...
  6. python 类组合_python类与对象的组合与继承
  7. springboot 默认异常处理
  8. Python 输出HTML实体字符(#x***转html,html符号乱码,中文乱码)
  9. Spring Security构建Rest服务-0600-SpringSecurity基本原理
  10. 集成学习—GBDT原理理解
  11. 如何将 Redis 的内存优化?
  12. python能做什么游戏-Python有做大型游戏的潜力吗?
  13. getWriter() has already been called for this response
  14. [SNMP超详解]:简介、抓包分析与编程实战
  15. 关于公司备份软件选型
  16. 很酷的瞄准镜样式光标效果
  17. linux系统怎么取消下载,Linux系统怎么彻底删除文件
  18. 基于Android的短信应用开发(六)——将发出短信存至数据库
  19. Ubuntu Linux 查看、编辑、比较二进制文件
  20. 子网掩码与prefixLength长度的互相转换

热门文章

  1. ofbiz 分开默认数据库
  2. 集线器,路由器,交换机的作用和区别是什么?如何区分交换机,集线器,路由器?...
  3. 中央气象台天气预报api调用
  4. Python体验(01)-变量、函数和基本控制语句
  5. 解析Java对象引用与JVM自动内存管理(2)
  6. 归并排序的C++实现
  7. eclipse中设定文档注释
  8. Windows 记事本的 Bug :-)
  9. 欣赏你的孩子(ZT)
  10. 解决java poi海量数据导出内存溢出问题