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

本文涉及的产品
云解析 DNS,旗舰版 1个月
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 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;
  }
}



相关文章
|
1月前
|
Java
【java】小学生数学练习题目生成系统
小学生数学练习题目生成系统
|
1月前
|
Java
java中递归实例
java中递归实例
27 0
|
2天前
|
Java
蓝桥杯Java组暴力递归搜图
蓝桥杯Java组暴力递归搜图
13 4
|
12天前
|
算法 前端开发 Java
探讨Java中递归构建树形结构的算法
探讨Java中递归构建树形结构的算法
9 1
|
1天前
|
Java
二分查找-递归(java)
二分查找-递归(java)
3 0
|
2天前
|
Java
java使用递归遍历文件目录
java使用递归遍历文件目录
5 0
|
25天前
|
Java
Java递归:深入理解与应用
Java递归:深入理解与应用
13 1
|
5天前
|
Java
杭电acm2018 母牛的故事 Java解法 经典递归
杭电acm2018 母牛的故事 Java解法 经典递归
7 0
|
30天前
|
Java
<Java SE> 5道递归计算,创建数组,数组遍历,JVM内存分配...
<Java SE> 5道递归计算,创建数组,数组遍历,JVM内存分配
40 2
|
30天前
|
设计模式 安全 Java
【设计模式】JAVA Design Patterns——Curiously Recurring Template Pattern(奇异递归模板模式)
该文介绍了一种C++的编程技巧——奇异递归模板模式(CRTP),旨在让派生组件能继承基本组件的特定功能。通过示例展示了如何创建一个`Fighter`接口和`MmaFighter`类,其中`MmaFighter`及其子类如`MmaBantamweightFighter`和`MmaHeavyweightFighter`强制类型安全,确保相同重量级的拳手之间才能进行比赛。这种设计避免了不同重量级拳手间的错误匹配,编译时会报错。CRTP适用于处理类型冲突、参数化类方法和限制方法只对相同类型实例生效的情况。
【设计模式】JAVA Design Patterns——Curiously Recurring Template Pattern(奇异递归模板模式)