作者简介:大家好,我是大杉。
个人主页:爱编程的大杉
支持我:点赞+关注~不迷路
✔系列专栏: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.返回值不做要求
3.参数列表不同(参数个数或参数类型不同)
4.必须在同一个类当中
☠️条件:要有限制条件和递归公式
本质:递归分为”递“和”归”两个过程,通过给定的条件进行“递”过程,再通过return进行“归”过程,最终通过限制条件结束递归
如果没有限制条件会怎么样?
方法调用时是在栈内存中开辟一块内存空间,如果没有限制条件。会使方法无限次调用,造成栈溢出。因为栈内存使有一定限度的。
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);
}
}
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);
}
}
一般我们运行斐波那契数列用迭代(循环)而不是递归,因为当进行一些比较大的数的递归时,它运行的效率比较低。那么为什么呢,这就不得不提到“穿脱原则”和“压栈现象”
压栈现象:如上图所示,在递归的数十分大时,会不断在上面开辟空间,不断占用栈内存,拖慢效率造成“压栈”现象。
穿脱原则:类似于穿衣服一样,先被调用的放法,后被释放出来