Java的方法和递归

发布于:2023-01-22 ⋅ 阅读:(204) ⋅ 点赞:(0)

方法

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;
 }
}

方法的重载

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

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

例如:
参数数量的不同

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;
    }
  • 传给 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;
    }
  • 传给 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;
    }
  • 传给 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);
    }

按顺序打印一个数字的每一位(例如 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 到 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);
    }

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


网站公告

今日签到

点亮在社区的每一天
去签到