【Java SE】方法 和 递归 的应用

 🔥博客主页🔥:【 坊钰_CSDN博客 】

欢迎各位点赞👍评论✍收藏⭐

目录

1. 方法的含义

1.1 例子

1.2 方法的概念

2. 方法的定义

3. 实参和形参

3.1 实参和形参的关系

4. 方法的重载

 5. 递归

 5.1 递归练习

6. 小结


 

1. 方法的含义

1.1 例子

我们先举一个例子:

假设有一位老师 “张三” ,在一次考试后,有一道题很难,那么学生 1 来问老师这道题咋写,学生 2 也来问老师咋写,学生 3 也来问老师咋写,很多学生都来问,这是老师想不可能给每一位学生都单独讲一遍,于是老师把这道题的解析录成一个视频,让学生们都去看,这样就解决了这个问题

  • 这样老师把这个问题整理成视频,减少了时间的浪费
  • 学生们自己点击视频,问题得到解决
  • 老师避免一个一个学生去讲解

在编程中也有一样的思想,某一个功能需要反复使用,一遍一遍写出来又太过冗余,所以将这个功能封装起来(叫做 “方法”),需要它时,直接调用即可,节省了消耗

1.2 方法的概念

Java 中的 方法 其实就类似与 C 语言中的 函数,用来解决一些反复使用的 代码段

例:判断一个产品的重量是否达到标准 ( 0 < 重量 <10 为合格,重量 > 10 不合格 )

public class Test {
    public static void main(String[] args) {

        //产品1
        int product1 = 4;
        if(product1 > 0 && product1 < 10) {
            System.out.println("合格");
        } else {
            System.out.println("不合格");
        }
        
        //产品2
        int product2 = 12;
        if(product1 > 0 && product1 < 10) {
            System.out.println("合格");
        } else {
            System.out.println("不合格");
        }
        
        //产品3
        int product3 = 6;
        if(product1 > 0 && product1 < 10) {
            System.out.println("合格");
        } else {
            System.out.println("不合格");
        }
    }
}

这样每有一个产品,就要判断一下,代码中重复代码较多,那么这就可以用 方法 来优化

2. 方法的定义

//方法的定义

修饰符 返回值 方法名称(参数类型 形式参数) {
       代码块(代码实现)
        return 返回值;
}

知道定义之后,就可以用方法来优化上面的例子

public class Test {

    //封装方法来检查是否合格
    public static void productCheak(int height) {
        if(height > 0 && height < 10) {
            System.out.println("合格");
        } else {
            System.out.println("不合格");
        }
    }

    public static void main(String[] args) {
        //多组产品
        int product1 = 4;
        productCheak(product1);
        int product2 = 13;
        productCheak(product2);
        int product3 = 8;
        productCheak(product3);
    }
}

运行结果

 

这样优化之后,代码结构更加清晰了然,这就是方法的作用

3. 实参和形参

例;交换两个数的值

public class Test {

    public static void swap(int x, int y) {   //这里的 x y 为形式参数
        int ret = x;
        x = y;
        y = ret;
    }

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("交换前");
        System.out.println(a + " " + b);

        swap(a, b);                          //这里的 a b 为形式参数
        System.out.println("交换后");
        System.out.println(a + " " + b);
    }

}

运行结果

这我们发现,代码是没错的,但是 a  b   却没有交换,这是为什么?这就要探讨实参和形参的关系了

3.1 实参和形参的关系

在内存中,形参和实参是两个不同的实体,实参有一份空间,形参也有一份空间,形参把实参临时拷贝到自己的空间中,在自己的一份空间执行操作,不会影响实参的空间和内容,这就是为什么上述 a b 没有交换成功的原因,下面图解:

4. 方法的重载

在我们日常生活中,存在着一词多义的现象,例:

粉丝:可以指的是 某个明星有很多粉丝,还可以指 吃火锅时的 粉丝

那么在我们编程的方法中,一个方法也可以处理不用形参下的情况,这种就叫做方法的重载

 例:写一个既能算整数相加也能算小数相加的重载方法 add

public class Test {

    public static int add(int x, int y) {
        return x + y;
    }

    public static double add(double x, double y) {
        return x + y;
    }

    public static void main(String[] args) {
        //整数
        int a = 1;
        int b = 5;
        int c = add(a, b);
        System.out.println(c);
        
        //小数
        double m = 1.9;
        double n = 4.3;
        double h = add(n, m);
        System.out.println(h);

    }

}

运行结果

方法重载的注意事项

  • 方法名必须相同
  • 参数列表必须不同(形参的类型,个数)
  • 与返回值无关 

 5. 递归

递归着两个字的含义

:依次进行下去    :在依次归递回来

递归就一句话:自己调用自己

例;正打印一个数字每一位,(例:1234     打印 1 2 3 4)

  • 我们可以想要打印 1234 每一位,我们拆开
  • 先打印 1 在打印 234 每一位
  • 在打印 2 在打印 34 每一位
  • 在打印 3 在打印 4 每一位
public class Test {

    public static void print(int n) {
        if(n > 10) {
            print(n / 10);
        }
        System.out.print(n % 10 + " ");
    }

    public static void main(String[] args) {
        int n = 1234;
        print(n);
    }
}

运行结果

 图解:(反复理解 “递” 和 “归” 的含义)

 5.1 递归练习

  • 斐波那契数列问题
  • 青蛙跳台问题
  • 汉诺塔问题

这些都不一一讲解了,有兴趣的可以自行研究,我往期博客也有

6. 小结

以上就是对方法和递归的了解,具体还需宝子们去实践,如果觉得该博客对你有用的话,希望一键三连,点个关注不迷路,谢谢支持! 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坊钰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值