递归时一种很常见的方法,把问题简单化。
递归的本质就是:自己调用自己。
例1:
public static void main(String[] args) {
a();
}
static void a(){
System.out.println("a");
a();
}
最后输出会无限循环输出a,然后报错,陷入死循环,所以这不是递归。
递归结构包括递归头和递归体
递归头:结束自身方法的条件,或者说是结束递归的条件
递归体:什么时候需要调用自己
对例1进行更改,为其加入递归头和递归体
例二:
public static void main(String[] args) {
a();
}
static int count=0;
static void a(){
System.out.println("a");
count++;
if(count<10){//递归体
a();
}else
return;//递归头,这个return不是返回值,而实结束方法
}
最后输出10个a
例3:
阶乘 计算5!
递归会使程序编写变的简单,但是同时却会占用大量的系统堆栈,内存耗用大,使用递归时,速度没有循环快、
一般递归都是可以用循环来代替。