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

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

在这里插入图片描述


一⛳重载的基本用法?

看下面这段代码?

    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;
    }
}

在这里插入图片描述
定义多个方法使它们的方法名相同,参数列表不同,传参数时实参根据自身类型,选择相应的方法进行运算的方式叫做方法重载

一、为什么要设计重载?

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

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


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

1.重载的特征:

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

2.常见案例:

1.不能完全一样
在这里插入图片描述2.正确案例
在这里插入图片描述3.正确案例:
在这里插入图片描述

三.递归的条件与本质

🏴‍☠️条件:要有限制条件和递归公式
🌞本质:递归分为”递“和”归”两个过程,通过给定的条件进行“递”过程,再通过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);
        }
    }

在这里插入图片描述

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的阶乘为例
在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述

  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 33
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Starry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值