/*
关于方法的递归调用:
1.什么是递归:
*方法自身调用自身
m(){
m();
}
2.递归是很耗费栈内存的,递归算法可以不用的时候尽量别用
3.以下程序运行的时候发生了这样的一个错误【不是异常,是错误】
java.lang.StackOverflowError
栈内存发生溢出错误
错误发生无法挽回,只有一个结果,就是报错后JVM停止工作【这是一种JVM的保护机制】
4.递归必须有结束条件,没有结束条件一定会发生栈内存溢出错误
5.递归即使有了结束条件,即使结果条件是正确的,也可能会发生栈内存溢出错误,
因为递归到太深入了,栈内存超标使用*/
public class recursion01
{
public static void main(String[] args)
{
System.out.println("main begin");
doSome();
System.out.println("main over");
}
//以下调用的方法虽然只有一份
//但是可以被重复调用,并且只要调用doSome()方法就会在栈内存中新分配一块内存空间
public static void doSome()
{
System.out.println("doSome begin");
doSome();//这行代码不结束,下一行代码不能执行
//return;//如果用上这个返回值的话相当于一个弹栈动作,就不会发生栈溢出错误
System.out.println("doSome over");
}
}