递归,简单地来说就是在程序执行的时候调用自己本身,但是一定要有一个终止的条件。下面又到了子月讲故事的阶段了,想必大家都看过盗梦空间吧,这就是一个递归的体现,首先我们先对应一个要点,一重梦境下又进入二重梦境,二重梦境下又进入三重梦境。这对应的不就是程序在不断地调用本身嘛!
第二个要点,一定要有一个结束的条件,也就是递归出口。各位可还记得男主手中的陀螺图腾吗?这个对应的就是程序中的结束判断条件哦!
package zuoye;
public class DiGui {
public static void main(String [] args) {
System.out.println(num(5));
}
public static int num(int n) {
if(n == 1) {
return n=1;
}else {
return n * num(n-1);
}
}
}
这里大家需要注意一个问题,就是这个判断结束条件的位置。一定要写在前面,如果写在后面的话,它就会一直无限的循环调用下去。
在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。(这个就像进入的梦境层数太多,人的意识越容易出不来,也就是潜意识边缘。)