方法的使用

方法的使用

1.方法的基本使用

1.1什么是方法

方法(method)就是一个代码片段,类似于C语言中的“函数”。

方法存在的意义:

​ 1.是能够模块化的组织代码;

​ 2.做到代码被重复使用,一份代码可以在多个位置使用;

​ 3.让代码更好理解更简单;

​ 4.直接调用现有方法开发,不必重复。

1.2方法定义语法

基本语法
//方法的定义
public static 方法返回值 方法名称(参数列表){
    代码体;
}

//方法的调用
返回值变量 = 方法名称(实参)
代码示例:
public class MethodDemo01 {
    public static void main(String[] args) {
        maxTwoNumber(1,2);
    }

    //判断两个数的最大值
    public static void maxTwoNumber(int a,int b) {
        if (a > b) {
            System.out.println(a);
        } else {
            System.out.println(b);
        }
    }
}

1.3方法调用的执行过程

基本规则

​ 1.定义方法的时候,不会执行方法的代码,只有调用的时候才会执行

​ 2.当方法被调用的时候,会将实参赋值给形参

​ 3.参数传递完毕后,就会执行到方法体代码

​ 4.当方法执行完毕后,就执行完毕,回到方法调用位置继续往下执行

​ 5.一个方法可以被多次调用

代码示例:
public class MethodDemo02 {
    public static void main(String[] args) {
        int sumFac = sumFac(5);
        int fac = fac(5);
        System.out.println(sumFac);
        System.out.println(fac);
    }

    //计算阶乘的和
    public static int sumFac(int n) {
        int sum = 0;
        for (int i = 1; i <= n ; i++) {
            sum += fac(i);
        }
        return sum;
    }

    //计算阶乘
    public static int fac(int n) {
        int fac = 1;
        for (int i = 1; i <= n; i++) {
            fac *= i;
        }
        return fac;
    }
}

2.方法的重载

2.1重载的规则

针对同一个类:

​ 方法名相同;

​ 方法的参数不同;

​ 方法的返回值类型不影响重载。

​ 当两个方法的名字相同,参数也相同,返回值不同的时候,不构成重载。

2.2使用重载

代码示例:
public static void main(String[] args) {

        System.out.println(add(10,20));
        System.out.println(add(2.5,2.1));
        System.out.println(add(2,6,5));
    }

    public static int add(int a,int b) {
        return a + b;
    }

    public static double add(double a,double b) {
        return a + b;
    }

    public static int add(int a,int b,int c) {
        return a + b + c;
    }

3.方法递归

3.1递归的概念

一个方法在执行过程中调用自身,就成为“递归”。

代码示例:递归求N的阶乘
 public static void main(String[] args) {
        System.out.println(fac(5));
    }

    public static int fac(int n) {
        if (n == 1) {
            return 1;
        }
        return n * fac(n - 1);
    }

3.2递归执行的过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A1cuAC9l-1602664742139)(C:\Users\史威震\AppData\Roaming\Typora\typora-user-images\image-20201014124509661.png)]

程序按照序号中标识的(1) ->(8)的顺序执行

3.3递归练习

代码示例1:按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)
public static void main(String[] args) {
        print(1234);
    }

    public static void print(int n) {
        if (n <= 9) {
            System.out.print(n+" ");
        } else {

            print(n / 10);
            System.out.print(n % 10+" ");
        }
    }
代码示例2:递归求和
public static void main(String[] args) {
        System.out.println(sum(10));
    }
    public static int sum(int num) {
        if (num == 1) {
            return 1;
        }
        return num + sum(num - 1);
    }
代码示例3:写一个递归方法,输入一个非负整数,返回组成它的数字之和.
public static void main(String[] args) {
        System.out.println(sum(1234));
    }

    public static int sum(int num) {
        if (num < 10) {
            return num;
        }
        return num % 10 + sum(num / 10);
    }
代码示例4:求斐波那契数列的第 N 项
 public static void main(String[] args) {
        System.out.println(fib(1));
        System.out.println(fib(6));
        System.out.println(fib(20));
    }
    public static int fib(int num) {
        if (num == 1 || num == 2) {
            return 1;
        }
        return fib(num - 1) + fib(num - 2);
    }

3.4递归小结

    System.out.println(fib(20));
}
public static int fib(int num) {
    if (num == 1 || num == 2) {
        return 1;
    }
    return fib(num - 1) + fib(num - 2);
}

### 3.4递归小结

有些问题天然是使用递归方式定义的,有些问题可以递归,也可以循环,相比于递归,非递归程序更加高效。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值