方法的类别、重载、递归

方法

理解:特定功能的代码块

好处:解决代码的冗余

语法结构:

          访问修饰符 static 返回值类型 方法名([参数列表]){

                 ...代码块...

         }

分类: 无参数无返回值的方法

            带参数的方法

           带返回值的方法

注意: 1.public是访问修饰符的一种,表示公有的

            2.void表示无返回值(关键字)

            3.方法在类中声明

            4.方法与方法之间是平级关系

            5.方法没被调用,就是个摆设

            6.静态方法(static修饰的方法)可以直接访问同个类中的其他静态方法,访问

              非静态方法时,必须先创建类的实例化对象来间接调用

public class Test { 
    public static void main(String[] args) {
     Test t = new Test();
     t.test();
​
 }
 public  void test(){
     System.out.println("1111");
 }
}

一、无参数无返回值的方法

语法结构: public static void 方法名(){ ...代码块 }

    public static void main(String[] args) {
     test();
​
 }
 public static void test(){
     System.out.println("1111");
 }
​

二、带参数的方法

语法结构:

         public static void 方法名(参数列表){

                 ...代码块...

        }

注意:

        1.形式参数/形参:声明方法时规定的参数

        2.形参必须声明类型

        3.形参属于该方法的变量,作用域就在该方法内,形参也是局部变量

        4.局部变量:方法里声明的变量

         5.实际参数/实参:调用方法时传入的数据

        6.实参和形参的类型必须兼容

         7.实参和形参可以有多个,用逗号分割

    public static void main(String[] args){
​
        getMax(10,20);
    }
    public static void getMax(int a,int b){
        int max = (a>b)?a:b;
        System.out.println("最大值为:" + max);
    }

三、带返回值的方法

语法结构:

        public static 返回值类型 方法名([参数列表]){

                 ...代码块...

                 return 数据;//1.结束当前方法 2.将数据返回给调用方

       }

注意:

        1.带返回值的方法有没有参数要看具体需求

        2.声明方法时需要设置返回值类型

        3.return后接的是需要返回的具体数据

        4.方法功能单一性(一个方法的功能不要过于强大)

        5.方法声明时规定的返回值类型 和 return后的数据 必须兼容

        6.返回值只能有一个,如果想返回多个值就必须使用数组、集合、....

    public static void main(String[] args){
        int max = getMax(a,b);
        System.out.println("最大值为:" + max);
    }
​
    public static int getMax(int a,int b){
        int max = (a>b)?a:b;
        return max;
    }

四、方法的重载

概念:方法之间的关系

条件:

        1.在同一个类中

        2.方法名必须一致

        3.参数列表的个数或者类型不一致

        4.与返回值无关

好处:系统会根据实参类型自动匹配到对应的方法中

应用场景:在同一个类中,多个方法功能大概一致,但是细节实现不一致,就可以考虑使用重载

    public static void main(String[] args){
​
        //打印getMax方法,前提是该方法必须有返回值
     System.out.println(getMax(20,30));
        System.out.println(getMax(10.1,20,30));
    }
​
    public static int getMax(int a,int b){
        return a+b;
    }
​
    public static int getMax(int a,int b,int c){
        int max = (a>b)?a:b;
        max = (max>c)?max:c;
        return max;
    }
    输出结果: 50
         30

五、方法的递归

含义:方法调用方法自身

注意:递归是一种程序设计的思想

经验:

        1.找规律:什么情况下方法应该调用方法自身

        2.找出口:什么情况下应该解决该方法

    /**需求:设计一个方法,传入一个int值n,求n的阶乘
       分析:
            5! = 1*2*3*4*5  -> 5! = 4! * 5
            4! = 1*2*3*4    -> 4! = 3! * 4
            3! = 1*2*3      -> 3! = 2! * 3
            2! = 1*2        -> 2! = 1! * 2
            1! = 1          -> 1! = 1
            找规律:n! = (n-1)! * n
            找出口:1! = 1
    */
     public static void main(String[] args){
​
        int num = getFactorial(5);
        System.out.println(num);
    }
​
    public static int getFactorial(int n){
​
        if(n != 1){
            return getFactorial(n-1) * n;
        }else{
            return 1;
        }
    }

需求:不死神兔问题: 有1对兔子,从出生后的第3个月起每个月都生一对兔子, 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第n个月有几对兔子 设计一个方法,传入月份,获取当月兔子的对数

分析:

找规律:当月兔子的对数等于上个月+上上个月兔子的对数 找出口:1月或2月都是1对兔子

扩展: 不死神兔的数据:1,1,2,3,5,8,13,21... 这种数列叫做斐波那契数列/黄金分割数列

           该数列相邻两个数的比例越往后越趋近于0.618

    public static void main(String[] args){
​
        int num = getRabbit(10);
        System.out.println(num);
    }
​
    public static int getRabbit(int month){
        if(month == 1 || month == 2){
            return 1;
        }else{
            return getRabbit(month-1) + getRabbit(month-2);
        }
    }
  • 25
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值