(JAVA编成练习):递归的使用,简单的列子帮你理解递归。

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: (JAVA编成练习):递归的使用,简单的列子帮你理解递归。

目录

前言:

1、什么是递归?

2、递归的定义:

3、递归图示:

4、第一题:

(1)题目:

(2)代码:

            a、关键处解析:

               b、完整代码:

5、第二题:

(1)题目:

(2)代码:

               a、关键处解析:

               b、完整代码:



前言:

打卡!

       递归对于初学者来讲是真的有些难理解,我初学递归时,第一个列子是汉诺塔游戏,我当时就绝望了,后来继续学习遇到了简单的题,一下就懂了,今天分享两个列子,简单的理解递归的应用。


1、什么是递归?

       递归定义是数理逻辑和计算机科学用到的一种定义方式,使用被定义对象的自身来为其下定义(简单说就是自我复制的定义)。递归定义(recursive definition)亦称归纳定义,一种实质定义,指用递归的方法给一个概念下的定义。


2、递归的定义:

       递归定义是数理逻辑和计算机科学用到的一种定义方式,使用被定义对象的自身来为其下定义(简单说就是自我复制的定义)。递归定义与归纳定义类似,但也有不同之处。递归定义中使用被定义对象自身来定义,而归纳定义是使用被定义对象的已经定义的部分来定义尚未定义的部分。不过,使用递归定义的函数或集合,它们的性质可以用数学归纳法,通过递归定义的内容来证明。

简单来说:递归函数就是自己调用自己的函数!


3、递归图示:


4、第一题:

(1)题目:

       利用递归方法求5!

(2)代码:

            a、关键处解析:

//定义一个新的方法intu()
public static int retu(int n) {
        int s; //存计算结果
    if(n==1) //如果n等于1时
    {
      s=1; //s就等于1
    }
    else {
      s=n*retu(n-1); //否则n就乘上(调用函数自己)的n-1
    }
    return s;
  }


               b、完整代码:

public class exercise15 {
  public static void main(String[] args) {
    int n=5;
    System.out.print(retu(n));
  }
  public static int retu(int n) {
    int s;
    if(n==1)
    {
      s=1;
    }
    else {
      s=n*retu(n-1);
    }
    return s;
  }
}


5、第二题:

(1)题目:

       有五个人坐在一起,问第五个人多少岁?他说比第四个人大2岁。问第四个人多少岁?他说比第三个人大2岁。问第三个人多少岁?他说比第二个人大2岁。问第二个人多少岁?他说比第一个人大2岁。问第一个人多少岁?他说是10岁。问第五个人多大?

(2)代码:

               a、关键处解析:

//同样是定义一个新的方法
public static int retu(int n) {
    int s;
    if(n==1) //当为第一个人时,年龄是10岁
    {
      s=10;
    }
    else {
      s=2+retu(n-1); //否则其他人均是前一个人的年龄加2
    }
    return s;
  }

              b、完整代码:

public class exercise15 {
  public static void main(String[] args) {
    int n=5;
    System.out.print(retu(n));
  }
  public static int retu(int n) {
    int s;
    if(n==1)
    {
      s=10;
    }
    else {
      s=2+retu(n-1);
    }
    return s;
  }
}



相关文章
|
2月前
|
Java
java基础(11)函数重载以及函数递归求和
Java支持函数重载,即在同一个类中可以声明多个同名方法,只要它们的参数类型和个数不同。函数重载与修饰符、返回值无关,但与参数的类型、个数、顺序有关。此外,文中还展示了如何使用递归方法`sum`来计算两个数之间的和,递归的终止条件是当第一个参数大于第二个参数时。
31 1
java基础(11)函数重载以及函数递归求和
|
4月前
|
算法 Java
java使用递归及迭代方式实现前序遍历 中序遍历 后序遍历 以及实现层序遍历
java使用递归及迭代方式实现前序遍历 中序遍历 后序遍历 以及实现层序遍历
82 7
|
5月前
|
Java
蓝桥杯Java组暴力递归搜图
蓝桥杯Java组暴力递归搜图
32 4
|
5月前
|
Java
java实现斐波那契数列(递归、迭代、流)
java实现斐波那契数列(递归、迭代、流)
|
5月前
|
算法 前端开发 Java
探讨Java中递归构建树形结构的算法
探讨Java中递归构建树形结构的算法
65 1
|
4月前
|
Java
【Java】程序练习1(数组)
【Java】程序练习1(数组)
|
5月前
|
Java
Java递归:深入理解与应用
Java递归:深入理解与应用
68 1
|
5月前
|
存储 Java
Java基础手册(标识符 关键字 字面值 变量 数据类型 字符编码 运算符 控制语句 方法及方法重载和递归 面向对象与面向过程)
Java基础手册(标识符 关键字 字面值 变量 数据类型 字符编码 运算符 控制语句 方法及方法重载和递归 面向对象与面向过程)
38 0
|
5月前
|
Java 大数据 程序员
老程序员分享:java递归
老程序员分享:java递归
26 0
|
6月前
|
Java
<Java SE> 5道递归计算,创建数组,数组遍历,JVM内存分配...
<Java SE> 5道递归计算,创建数组,数组遍历,JVM内存分配
59 2
下一篇
无影云桌面