先来一个小故事:
从前有座山,山里有座庙,庙里有个老和尚和一个小和尚,老和尚给小和尚在讲故事,讲的就是:从前有座山,山里有座庙,庙里有个老和尚和一个小和尚,老和尚给小和尚在讲故事,讲的就是:从前有座山,山里有座庙,庙里有个老和尚和一个小和尚,老和尚给小和尚在讲故事,讲的就是:…
递归
递归就是方法自己调用自己,就是在自身的方法体中再调用自己。
public void method(){
method();
}
递归结构包含两部分:
- 递归出口:什么时候不调用自身方法(如果没有出口,将陷入死循环)。
- 递归体:什么时候需要调用自身方法。
利用递归可以用简单的程序来解决一些复杂的问题,它可以把一个大的复杂的问题转化为一个与原问题相似的规模较小的问题来求解。
博主还是举例说明,比如我们求一个数的阶乘,采用递归方法如下:
public int f(int num) {
//递归出口
if (num <= 1) {
return 1;
}
//递归体
return num * f(num - 1);
}
比如我们运行一个5的阶乘,下面用图示表示该递归:
当然,递归也有不好的地方,就拿上述代码举例吧,如果我们计算的数据太大,计算机内存的消耗就会很大,这样也不利于程序的运行,所以能不使用递归就不用递归。