【javase基础】第六篇:方法的重载与递归

作者简介:大家好,我是大杉。
个人主页:爱编程的大杉
支持我:点赞+关注~不迷路
✔系列专栏:javase基础⚡⚡⚡
(❁´◡`❁)励志格言:在我有生之日,做一个真诚的人,不放弃对生活的热爱和执着,在有限的时空里,过无限广大的日子。(by 三毛)

【javase基础】第六篇:方法的重载与递归_第1张图片

文章目录

  • 一⛳重载的基本用法?
  • 一、为什么要设计重载?
  • 二、如何判断是不是重载?
    • 1.重载的特征:
    • 2.常见案例:
  • 三.递归的条件与本质
  • 四.典型例题
    • 1.斐波那契额数列(多路递归)
    • 2.求n的阶乘(单路递归)
    • 3.递归的不足(压栈现象)


一⛳重载的基本用法?

看下面这段代码?

    public class test {
    public static void main(String[] args) {
        double a = 3.14;
        double b = 4.12;
        int c=2;
        int d=3;
        System.out.println(sum(a, b));
        System.out.println(sum(c, d));

    }

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

    }

    public static double sum(double a, double b) {

        return a+b;
    }
}

【javase基础】第六篇:方法的重载与递归_第2张图片
定义多个方法使它们的方法名相同,参数列表不同,传参数时实参根据自身类型,选择相应的方法进行运算的方式叫做方法重载

一、为什么要设计重载?

主要目的:节约字母,减少操作复杂性。

举个例子:我们java通常使用的打印方法System.out.println(),其实也是这个原理,在打印时,我们不能为每一个不同的数据类型都定义一种打印方法,只能放在一个方法了,根据数据类型自行选择打印方式


二、如何判断是不是重载?

1.重载的特征:

1.方法名相同。
2.返回值不做要求
3.参数列表不同(参数个数或参数类型不同)
4.必须在同一个类当中

2.常见案例:

1.不能完全一样
【javase基础】第六篇:方法的重载与递归_第3张图片2.正确案例
【javase基础】第六篇:方法的重载与递归_第4张图片3.正确案例:
【javase基础】第六篇:方法的重载与递归_第5张图片

三.递归的条件与本质

‍☠️条件:要有限制条件和递归公式
本质:递归分为”递“和”归”两个过程,通过给定的条件进行“递”过程,再通过return进行“归”过程,最终通过限制条件结束递归

如果没有限制条件会怎么样?
方法调用时是在栈内存中开辟一块内存空间,如果没有限制条件。会使方法无限次调用,造成栈溢出。因为栈内存使有一定限度的。

四.典型例题

1.斐波那契额数列(多路递归)

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        System.out.println(feibona(n));
    }
    public static int feibona(int n)
    {
        if(n==1)
        {
            return 1;
        }
        else if(n==2)
        {
            return 1;
        }
        else
        {
            return feibona(n-1)+feibona(n-2);
        }
    }

【javase基础】第六篇:方法的重载与递归_第6张图片

2.求n的阶乘(单路递归)

 public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        fac(n);
    }
    public static int fac (int n)
    {
        if(n==1)
        {
            return 1;
        }
        else
        {
            return n*fac(n-1);
        }
    }

以4的阶乘为例
【javase基础】第六篇:方法的重载与递归_第7张图片

3.递归的不足(压栈现象)

一般我们运行斐波那契数列用迭代(循环)而不是递归,因为当进行一些比较大的数的递归时,它运行的效率比较低。那么为什么呢,这就不得不提到“穿脱原则”和“压栈现象”

【javase基础】第六篇:方法的重载与递归_第8张图片

压栈现象:如上图所示,在递归的数十分大时,会不断在上面开辟空间,不断占用栈内存,拖慢效率造成“压栈”现象。
穿脱原则:类似于穿衣服一样,先被调用的放法,后被释放出来

你可能感兴趣的:(javase基础,java,intellij-idea,开发语言)