JavaSE!语法基础~~函数 (2)

函数的重载!!!!!!!!!

【方法重载概述】

在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。

【方法重载特点】

·与返回值类型无关,只看方法名和参数列表
·在调用时,虚拟机通过参数列表的不同来区分同名方法

!!!重载的好处就在于我们可以扩展函数的功能(函数重名,但是参数类型不一样,执行内容也可以不一样)

实例如下:

class Text07_02{
    public static void main(String[] args){
        int a=3;
        int b=4;
        System.out.println(add(a,b));
        double d=3.14;
        double e=5.44;
        System.out.println(add(d,e));
        System.out.println(add(9,3.14));
        System.out.println(add(3.14,9));
    }
    //1.对两个小数进行加法运算
	public static double add(double a,double b){
        System.out.println("double+double");
        return a+b;
    }
    //2.对两个字符串进行拼接
    public static String add(String a,String b){
        System.out.println("String+String");
        return a+b;
    }
    //3.
    public static double add(int a,double b){
        System.out.println("int+double");
        return a+b;
    }
    //4.
    public static double add(double a,int b){
        System.out.println("double+int");
        return a+b;
    }
    //5.对两个整数进行加法运算
    public static int add(int a,int b){
        System.out.println("int+int");
        return a+b;
    }
}

寻找适当函数的流程! ! ! ! ! ! ! ! ! ! !

1.看是否有确切的参数定义 int+int 查看是否有(int,int)
2.看是否有可兼容的参数定义 int+int 查看是否有(double,double)
3.如果可兼容的参数定义有多个int+int,(double,int)或(int,double) 此时报错 引用不明确

函数的递归调用!!!!!!!!!!

【人用迭代,神用递归】!!!!!!

什么是递归?

  •      在一个方法的内部,对自身进行调用,又叫做递归调用
    

递归和循环的编写都包括三部分:

  •      1. 初始值;
    
  •      2. 终止条件;
    
  •      3. 前进步长;
    

递归解决比较常见的问题:

  •      累加加的和;
    
  •      阶乘;
    
  •      斐波那契数列等;
    

递归递归,先递后归。我们可以把递归分成三个部分,即前进段(就是讲问题从大化小)、结束段(就是问题无法再继续化小,则处理当前的问题)、返回段(就是将小问题都处理完毕之后,向上进行返回(有些问题是不需要返回的)。

斐波那契数列

  •  斐波那契数列第一位和第二位的数值都是1,之后的每一位都是前两位的和;
    

接下来,我们分别用迭代和递归的思想来求斐波那契数列的前10项和。
思想分析:

10项:1 1 2 3 5 8 13 21 34 55 ......
        f(n)指的是斐波那契的第n项
        f(n)=f(n-1)+f(n-2) f(1)=1 f(2)=1
                    f(5)
                f(4)        f(3)
            f(3)    f(2) f(2)   f(1)
        f(2)    f(1)

源代码:

class Test07_03{
    public static void main(String[] args){
        for(int i=1;i<=10;i++){
            System.out.println(fibo(i));//用递归的思想求前10项
        }
        System.out.println("===================");
        fiboIterator(10);//用迭代的思想求前10项
    }
    //迭代函数
    public static void fiboIterator(int n){
        int a=1;
        int b=1;
        System.out.println(a);
        System.out.println(b);
        int count=2;
        int c;
        while(true){
            c=a+b;
            System.out.println(c);
            count++;
            if(count==n){
                return;
            }
            a=b;
            b=c;
        }
    }
    //递归函数
    public static int fibo(int n){
        if(n==1||n==2){
            return 1;
        }
        return fibo(n-1)+fibo(n-2);
    }
}

发布了39 篇原创文章 · 获赞 0 · 访问量 1383

猜你喜欢

转载自blog.csdn.net/qq_43199083/article/details/104290896