黑马程序员技术交流社区

标题: 关于递归 [打印本页]

作者: suifeng1987    时间: 2016-8-23 13:16
标题: 关于递归
要用到递归是不是必然有第一次加载方法得出的具体参数传给自己调用,就是这个反复传参的过程?有例外么?还有如果递归调用了那么返回之后会改变方法中定义的局部变量么?例如循环之前定义的int变量和File对象,如果不能改变int那么为什么递归调用时传入的++lev可以改变第一次加载方法时的lev??求大神详细指点感谢感谢!
作者: tbh    时间: 2016-8-23 18:02
不太能理解你的意思,说一下我关于递归的理解,递归的第一步,就是找到一个能够结束递归的条件,使传入的值能够有一个确定的返回值,第二部就是要确定递归的循环体,确定每次要返回的参数,例如在求x的阶乘时候,就是要返回  jiecheng(x)*jiecheng(x-1),结束的条件就是当传入值小于等于 1 的时候返回1 ,此时开始从栈内层层递归返回,每次传入的变量相当于重新存储在栈中,并不是改变以前的值,这也就是为什么递归层次太多会导致栈溢出的原因
作者: life写实    时间: 2016-8-23 22:57
因为方法并没有弹栈,知道方法执行到你自己定义的出口,才会一个一个的弹栈。
作者: suifeng1987    时间: 2016-8-25 01:04
tbh 发表于 2016-8-23 18:02
不太能理解你的意思,说一下我关于递归的理解,递归的第一步,就是找到一个能够结束递归的条件,使传入的值 ...

恩谢谢大神 你的理解很深刻 我明白了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2