递归三要素:

1、明确递归终止条件;

2、给出递归终止时的处理办法;

3、提取重复的逻辑,缩小问题的规模。

1、1+2+3+…+n

import java.util.Scanner;public class Recursion {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();System.out.println(sum(n));}public static int sum(int n) {if(n == 1) {return n;}else {return n + sum(n-1);}}}

2、1 * 2 * 3 * … * n

import java.util.Scanner;public class Recursion {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();System.out.println(multiply(n));}public static int multiply(int n) {if(n == 1) {return n;}else {return n*multiply(n-1);}}}

3、斐波那契数列

前两项均为1,第三项开始,每一项都等于前两项之和。即:1,1,2,3,5,8,…

import java.util.Scanner;public class Recursion {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();System.out.println(fun(n));}public static int fun(int n) {if (n <= 2) {return 1;}else {return fun(n-1) + fun(n-2);}}}

4、二叉树的遍历(前、中、后)

import java.util.Arrays;import java.util.LinkedList;public class MyBinaryTree {//二叉树节点private static class TreeNode{int data;TreeNode leftChild;TreeNode rightChile;public TreeNode(int data) {this.data = data;}}//构建二叉树public static TreeNode createBinaryTree(LinkedList<Integer> inputList) {TreeNode node = null;if(inputList == null || inputList.isEmpty()) {return null;}Integer data = inputList.removeFirst();//如果元素为空,则不再递归if(data != null){node = new TreeNode(data);node.leftChild = createBinaryTree(inputList);node.rightChile = createBinaryTree(inputList);}return node;}//前序遍历:根节点,左子树,右子树public static void preOrderTraveral(TreeNode node) {if (node == null) {return;}System.out.println(node.data);preOrderTraveral(node.leftChild);preOrderTraveral(node.rightChile);}//中序遍历:左子树,根节点,右子树public static void inOrderTraveral(TreeNode node) {if(node == null) {return;}inOrderTraveral(node.leftChild);System.out.println(node);inOrderTraveral(node.rightChile);}//后序遍历:左子树,右子树,根节点public static void postOrderTraveral(TreeNode node) {if (node == null) {return;}postOrderTraveral(node.leftChild);postOrderTraveral(node.rightChile);System.out.println(node.data);}public static void main(String[] args) {LinkedList<Integer> inputList = new LinkedList<Integer>(Arrays.asList(new Integer[]{3,2,9,null,null,10,null,null,8,null,4}));TreeNode treeNode = createBinaryTree(inputList);System.out.println("前序遍历:");preOrderTraveral(treeNode);System.out.println("中序遍历:");inOrderTraveral(treeNode);System.out.println("后序遍历:");postOrderTraveral(treeNode);}}

以上就是java递归算法实例的详细内容。

如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,,咱们下期见。

收藏 等于白嫖,点赞才是真情。

亲爱的小伙伴们,有需要JAVA面试文档资料请点赞+转发,关注我后,私信我333就可以领取免费资料哦

java递归算法的实例最细讲解相关推荐

  1. java古典兔子问题c语言,Java递归算法经典实例(经典兔子问题)

    Java递归算法经典实例(经典兔子问题) 题目:古典问题:3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 分析:首先我们要明白题目的意思 ...

  2. java递归算法经典实例_Java实现简单的递归操作方法实例

    前言 在数据结构算法设计中,或者一个方法的具体实现的时候,有一种方法叫做"递归",这种方法在思想上并不是特别难,但是实现起来还是有一些需要注意的.虽然对于很多递归算法都可以由相应的 ...

  3. java volatile实例_Java的Volatile实例用法及讲解

    Java的Volatile实例用法及讲解 发布时间:2020-10-03 12:01:58 来源:脚本之家 阅读:88 作者:konami 在原子性.可见性.有序性中,volatile关键字主要在可见 ...

  4. 递归Java_Java递归算法经典实例

    原标题:Java递归算法经典实例 简单递归定义 什么叫递归?(先定义一个比较简单的说法,为了理解,不一定对) 递归:无限调用自身这个函数,每次调用总会改动一个关键变量,直到这个关键变量达到边界的时候, ...

  5. JAVA中希尔排序去的讲解_java 中基本算法之希尔排序的实例详解

    java 中基本算法之希尔排序的实例详解 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法.该方法因DL.Shel ...

  6. 网络爬虫讲解(附java实现的实例)

    luojinping的专栏 目录视图 摘要视图 订阅 CSDN日报20170219--<程序员的沟通之痛>      [技术直播]揭开人工智能神秘的面纱        程序员1月书讯    ...

  7. java rmi 入门实例

    java rmi 入门实例 (2009-06-16 16:07:55) 转载▼ 标签: java rmi 杂谈 分类: java-基础  java rmi即java远程接口调用,实现了2台虚拟机之间的 ...

  8. Java经典编程实例源码及视频专题汇总

    转:http://blog.itpub.net/28566218/viewspace-760945/ Java经典编程实例源码及视频专题汇总 Java是一种可以撰写跨平台应用软件的面向对象的程序设计语 ...

  9. java局部变量全局变量,实例变量的理解

    java局部变量全局变量,实例变量的理解 局部变量 可以理解为写在方法中的变量. public class Variable {//类变量static String name = "小明&q ...

  10. 用 XStream 序列化/反序列化 XML 为 Java 对象(实例)

    用 XStream 序列化/反序列化 XML 为 Java 对象(实例) Posted on 2007-06-05 19:06 Stephen Wong 阅读(1224) 评论(0)  编辑 收藏 网 ...

最新文章

  1. 前端面试题目及答案(欢迎拍砖)
  2. 普通爬虫有啥意思,我写了个通用Scrapy爬虫
  3. 解决windows系统80端口被占用问题
  4. Blazor 路由及导航开发指南
  5. Android M 新的运行时权限开发者需要知道的一切
  6. iOS HTML标签字符实体,转译字符串归类大全 【转载】
  7. [dp]leetcode 746. Min Cost Climbing Stairs
  8. 论文浅尝 - ACL2020 | Segmented Embedding of Knowledge Graphs
  9. [Essay] Blog 带来机会?
  10. 金额大小写转换(4)
  11. 模糊逻辑学习--模糊逻辑的基础
  12. 解决在页面中无法获取qrcode.js生成的base64的图片
  13. myeclipse中光标突然变粗的解决方法
  14. Unity3D中文视频教程【超清+精选】
  15. 【LeetCode 1125】 Smallest Sufficient Team
  16. HTTP,TCP,UDP,Socket,WebSocket
  17. 密评是什么?密评评分具体是怎么打分的?安当加密
  18. 中国碗扣式脚手架行业市场供需与战略研究报告
  19. android++日历示例,Android控件之CalendarView 日历对话框(示例代码)
  20. jeecg v3.6.6 excel导入js方法完善

热门文章

  1. 微信小程序导航:官方文档+精品教程+demo集合(6月12日更新)
  2. 潘多拉路由器php,Padavan潘多拉固件ap模式openwrt固件应该如何设置有线AP模式
  3. 精仿blbl视频播放器源码 cms播放器 支持加视频LOGO
  4. 《redis设计与实现(第二版)》
  5. 拉普拉斯变换与拉普拉斯逆变换的常用结论与经典公式
  6. iconfont-阿里巴巴矢量图标库的使用
  7. 怎么批量查找关键词-批量查找关键词软件工具
  8. 2018年小美赛C题参赛经历
  9. Linux基础入门命令汇总(2022.03.30更新)
  10. 各省简称 拼音 缩写_中国省会城市拼音名称及缩写