A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© suifeng1987 中级黑马   /  2016-8-23 13:16  /  792 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

要用到递归是不是必然有第一次加载方法得出的具体参数传给自己调用,就是这个反复传参的过程?有例外么?还有如果递归调用了那么返回之后会改变方法中定义的局部变量么?例如循环之前定义的int变量和File对象,如果不能改变int那么为什么递归调用时传入的++lev可以改变第一次加载方法时的lev??求大神详细指点感谢感谢!

3 个回复

倒序浏览
不太能理解你的意思,说一下我关于递归的理解,递归的第一步,就是找到一个能够结束递归的条件,使传入的值能够有一个确定的返回值,第二部就是要确定递归的循环体,确定每次要返回的参数,例如在求x的阶乘时候,就是要返回  jiecheng(x)*jiecheng(x-1),结束的条件就是当传入值小于等于 1 的时候返回1 ,此时开始从栈内层层递归返回,每次传入的变量相当于重新存储在栈中,并不是改变以前的值,这也就是为什么递归层次太多会导致栈溢出的原因
回复 使用道具 举报
因为方法并没有弹栈,知道方法执行到你自己定义的出口,才会一个一个的弹栈。
回复 使用道具 举报
tbh 发表于 2016-8-23 18:02
不太能理解你的意思,说一下我关于递归的理解,递归的第一步,就是找到一个能够结束递归的条件,使传入的值 ...

恩谢谢大神 你的理解很深刻 我明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马