• Java的方法和递归


    方法

    Java 中的方法是和C语言中的函数的功能是相同的
    假设我们需要频繁的使用某个代码,就可以用方法进行封装,在需要时直接调用
    方法的优点:

    • 在代码比价复杂时,方法可以使代码模块化,使对每个功能进行封装
      方便后期的维护
    • 一个代码多次使用到时,用方法进行封装,要使用时可以直接调用
      不必重复性的写代码,节省了时间,增加了代码的可阅读性

    方法的定义

    例如:
    在这里插入图片描述

    • public static 是方法必须写的修饰符
      int 是你传递数值的类型,传什么类型写什么参数
      add 是方法的名称,是自定义的,在Java 中方法名都是用 小驼峰 命名
      后面的是方法的参数列表,按照传参时的类型 一 一对应
    • { ] 大括号里的是方法体,就是这个方法功能的实现
      最后的return 可写可不写,按照情况而定
      如果有返回值,那么返回值的类型必须要和返回的实体类型一样
      如果没有,那可以写成 void

    方法的调用

    例如:
    求 1 到 5 的阶乘

    在这里插入图片描述

    实参和形参的关系

    在C语言中形参是实参的临时拷贝,对形参的修改是不会影响实参的
    如果想要对实参进行修改,就要传实参的地址,C语言是 (&实参)
    在 Java 中是不能进行 & 操作的
    在Java 的解决办法是:传引用类型参数
    之后会详细讲

    public class TestMethod {
    public static void main(String[] args) {
    int[] arr = {10, 20};
    swap(arr);
    System.out.println("arr[0] = " + arr[0] + " arr[1] = " + arr[1]);
    }
    public static void swap(int[] arr) {
    int tmp = arr[0];
    arr[0] = arr[1];
    arr[1] = tmp;
     }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    方法的重载

    正常遇到方法功能十分的相似,但是参数不同,都是需要重新写一个方法,而且方法名必须要不一样的,这样就需要记忆更多的方法名称,而且可能记错,导致代码出现问题
    这种情况就可以使用 方法重载

    • 方法重载的作用:
      方法重载作用是可以对 功能相似的方法,使用相同的方法名,更易于以后的代码编写
    • 方法重载 的区分:
      方法重载 的情况下,编译器会通过方法的类型参数进行区分
    • 使用方法重载 的要求:
      方法名必须相同
      参数列表必须不同 ,分三种(参数的个数不同、参数的类型不同、类型的次序必须不同
      返回的类型相同不相同无关

    例如:
    参数数量的不同

    public static void main(String[] args) {
            add(10);
            add(10,15);
        }
        public static int add(int a) {
            return a + 1;
        }
        public static int add (int a,int b){
            return a+b;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 传给 add 的参数分别是 1 个 和 2 个,这是参数数量的不同

    参数的类型不同

    public static void main(String[] args) {
            add(10,23);
            add(3.5,4.7);
        }
        public static int add(int a,int b) {
            return a + b;
        }
        public static double add (double a,double b){
            return a+b;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 传给 add 的参数分别是 整形浮点型

    类型的次序必须不同

     public static void main(String[] args) {
            add(10.5,23);
            add(3,4.7);
        }
        public static double add(double b,int a) {
            return a + b;
        }
        public static double add (int a,double b){
            return a+b;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 传给 add 的第一参数是浮点型和整形,接收时顺序不一样

    方法的递归

    方法递归:自己调用自己
    方法的递归必须存在二个条件:
    限制条件:限制条件是当满足这个限制条件的时候,递归便不再继续
    递增条件:每次递归调用之后越来越接近这个限制条件

    递归练习题

    用方法的递归求 n 的阶乘

    public static void main(String[] args) {
            int n = 5;
            int ret = fac(n);
            System.out.println(ret);
        }
        public static int fac(int n) {
            if (n == 1) {
                return 1;
            }
            return n * fac(n - 1);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)

    public static void main(String[] args) {
            int n = 1234;
            ack(n);
        }
        public static void ack(int n) {
            if(n > 10) {
                ack(n /10);
            }
            System.out.println(n % 10);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    用方法的递归求 1 到 10的和

     public static void main(String[] args) {
            int ret = adk(1);
            System.out.println(ret);
        }
        public static int adk(int n) {
            int sum = 0;
           if(n == 10) {
               return 10;
           }
           return n + adk(n+1);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    活动地址:CSDN21天学习挑战赛

  • 相关阅读:
    Error: contextBridge API can only be used when contextIsolation is enabled
    tomcat(二)
    网络编程套接字(2)——简单的TCP网络程序
    jdk1.8中list按对象的某个属性分组
    数据大屏设计思路 6点
    Ubuntu22.04配置Go环境
    [性能优化] 使用 esbuild 为你的构建提速
    N9917A|是德科技keysight N9917A微波分析仪
    Vue项目保持用户登录状态(localStorage + vuex 刷新页面后状态依然保持)
    区块链技术的应用场景和优势
  • 原文地址:https://blog.csdn.net/m0_66483195/article/details/126276082