黑马程序员技术交流社区
标题:
关于递归,如何理解
[打印本页]
作者:
A昌_e244R
时间:
2016-5-31 01:05
标题:
关于递归,如何理解
最近学到了递归,看起来简单,自己做起来又不知道如何下手,越想越乱!
如何去理解递归,如何去使用递归呢,谢谢!!
作者:
爱生活爱Java
时间:
2016-5-31 12:46
递归说白了自己调用自己。举个例子你求5的阶乘。
递归思想:
5!=5*4!
4!=4*3!
3!=3*2!
2!=2*1!(1的阶乘自然就是1啦)
方法实现
public static int getJie(int num){
if(num==1){
return 1;
}else{
return num =num*getJie(num-1);
}
}
具体实现
1.Jvm调用main方法 getJie(5)进栈 返回 5*getJie(4)
2. getJie(4)进栈 返回 4*getJie(3)
3. getJie(3)进栈 返回 3*getJie(2)
4. getJie(2)进栈 返回 2*getJie(1)
5. getJie(1)进栈 返回 1
完了从getJie(1) 开始依次弹栈
1. getJie(1) 返回1 弹栈
2. getJie(2) -->2*getJie(1) -->2*1 =2 弹栈
3 getJie(3) -->3*getJie(2) --->3*2 =6 弹栈
4. getJie(4) --->4*getJie(3) --->4*6 =24 弹栈
5. getJie(5) ---> 5*getJie(4) -->5*24=120 弹栈
个人总结: 1.递归必须有一个出口,这里的return 1就是一个出口,要不然会是死递归
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2