递归就是自己调用自己,方法与方法之间,类与类之间都可以。所谓递归调用,就是一个方法自己调用自己。在使用递归调用的时候,应该声明一个操作的终结点。不然的话,你的递归程序会因栈空间不足而终止 。
其实很好理解,下面举个例子。
public class Test{
public static void main(String arg[])
{
System.out.println(method(5));
}
//递归函数
public static int method(int n)
{
if(n==1)// 声明的操作的终结点
{
return 1;
}
else
{
return n*method(n-1);
}
}
}
解释:在这个中就使用了自己调用method自己调用自己的方法。在这个方法中,我们先是对它进行传参n,然后用if判断如果n=1结束。否则继续执行递归方法。这个递归直到5次结束。
内存的执行过程:
描述:method(5)需要method(4)的值,method(4)需要method(3)的值。。。。一直到method(1)有值往回返。
从这就可以看出:采用递归调用的时候会增加内存负担,因为每调用一次方法都要新开辟一段栈空间,直到该方法调用结束才释放 。
但是递归结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,有些算法必须使用递归,用递归来讲比循环要简单明了!
有优点就有缺点,有的地方说要慎用!不过现阶段主要以学习为主,所以都要尝试,以后再研究它的缺陷。