ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Day05-方法与递归

2021-02-06 23:34:57  阅读:135  来源: 互联网

标签:Scanner 递归 int void System Day05 static 方法 public


方法

Java方法是语句的集合,它们在一起执行一个功能

System.out.println()是什么意思

System类中的out对象的println()方法

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        add(a)
        Scanner.close();
        System.out.println(a);//输出2a
    }
    public static int add(int a){
        return a+a;
    }
}

设计方法的原则

遵循原子性原则,一个方法只实现一个功能,便于后续的开发和扩展

方法的定义

修饰符 返回数值类型  (void) 方法名(参数类型 参数名){
    方法体
}

void表示该方法不返回值

方法重载

同样的方法名,但是参数个数不同,或者参数数据类型不同,目的在于应对一对多情况

注意点

  1. 方法名必须相同
  2. 方法参数个数或者类型需要不同
public class Main{
    public static void main(String[] args){
        int a = 10;
        int b = 10;
        int c = 10.0;
        int d = 10.0;
        int e = add(a,b);
        int f = add(c,d);
    }
    public static int add(int a,int b){
        return a+b;
    }
    public static double add(double a,double b){
        return a+b;
    }
}

命令行传参

public class Main{
    public static void main(String[] args){
       for(int i =0;i<args.length){
           System.out.println(args[i])
       }
    }
}

通过命令提示符传参步骤

  1. javac Main.java

  2. 回退到src目录下

  3. java Main this is test

  4. 输出的结果为

    this

    is

    test

可变参数

JDK5新特性

  1. 每一个方法有且只有一个可变参数
  2. 普通参数应在可变参数前定义
public class Main {
    public static void main(String[] args) {
        test(1,9,4,3,25,11);
    }
    public static void test(int... number){
        if(number.length==0){
            System.out.println("此数组长度为0");
        }
        int result = number[0];
        for (int i = 0;i<number.length;i++){
            if(number[i]>result){
                result = number[i];
            }
        }
        System.out.println("该数组中最大的数为:"+result);
    }
}

递归

方法调用方法自身,目的在于将复杂的问题分解,以一种较为高效的形式解决问题

递归组成部分

  1. 退出递归的条件
  2. 递归内容
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        System.out.println(f(n));
        Scanner.close();
    }
    public static int f(int n){
        if(n==1) return 1;
        return n*(n-1);	//阶乘
    }
}

取球问题

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        System.out.println(f(n,m));
        Scanner.close();
    }
    public static int f(int n,int m){
		if (n<m) return 0;
        if (n==0) return 1;	//当小球个数为0时,终止循环
        return f(n-1,m-1)+f(n-1,m);
        //将n个小球分成两个部分,1和n-1,所以m从n个小球中的可能取值为:
        //(1)从n-1个小球中去m个  (2)从n-1个小球中取m-1个再加上1个
    }
}

标签:Scanner,递归,int,void,System,Day05,static,方法,public
来源: https://www.cnblogs.com/cwtjyy/p/14383534.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有