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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sunxiaohong 中级黑马   /  2015-5-9 14:18  /  401 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1. 关于方法的递归算法,说法正确的是( abd   )
a) 递归就是方法自己调用自己
b) 递归的次数不能过大,否则会导致栈内存溢出
c) 使用递归算法,方法必须有返回值
d) 构造方法不可以使用递归算法



求教,不明白为什么选项b是对的?
递归不应该是导致堆栈溢出么?

8 个回复

倒序浏览
堆栈分为两部分,堆内存、栈内存~ b 是对的哦~
回复 使用道具 举报
大西洋 发表于 2015-5-9 14:25
堆栈分为两部分,堆内存、栈内存~ b 是对的哦~

为什么不是堆内存溢出,而是栈内存溢出呢
回复 使用道具 举报
sunxiaohong 发表于 2015-5-9 14:36
为什么不是堆内存溢出,而是栈内存溢出呢

栈内存,用来存放基本数据类型和引用数据类型的数值~

堆内存,存放的是new关键字实例化的对象和数组;

简而言之,栈内存是用来执行程序的,而堆内存主要是存放对象的~

所以递归次数过多,栈内存就会被消耗殆尽~ 然后就溢出啦~

点评

好吧,这样理解,递归是方法,要存储在方法区,当主函数调用的时候,递归就会进栈,然后递归又自己调用自己,所以次数多了之后,栈内存就溢出了?  发表于 2015-5-9 14:56
回复 使用道具 举报
红姐上面理解的很对啊!
回复 使用道具 举报
大兵在海边 发表于 2015-5-9 15:00
红姐上面理解的很对啊!

我去,你怎么知道是我?好吧,估计是名字暴露了,,
回复 使用道具 举报
顶一下、、、、、、、、、、、
回复 使用道具 举报
sunxiaohong 发表于 2015-5-9 15:06
我去,你怎么知道是我?好吧,估计是名字暴露了,,

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马