0
点赞
收藏
分享

微信扫一扫

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

罗子僧 2022-05-01 阅读 111

👀作者简介:大家好,我是大杉。
🚩🚩 个人主页:爱编程的大杉
支持我:点赞+关注~不迷路🧡🧡🧡
✔系列专栏: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.重载的特征:

2.常见案例:

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

三.递归的条件与本质

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

四.典型例题

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.递归的不足(压栈现象)

在这里插入图片描述

在这里插入图片描述

举报

相关推荐

0 条评论