java递归太深
前几天写了个java程序,说是递归太深,栈溢出了.怎么解决呢? --------------------编程问答-------------------- 栈内存也是有空间大小的,你栈中存放的变量太多超过了大小,放不下这个是你程序的问题,会出现这种问题的程序不行 --------------------编程问答-------------------- 改用循环不就好了! --------------------编程问答-------------------- 递归占用内存空间大,效率还低,递归的次数越多,占用的内存空间会逐渐增加,当达到堆栈空间放不下时就会溢出。能用循环解决的就不用递归. --------------------编程问答-------------------- 代码有问题,发生死循环了吧 --------------------编程问答-------------------- 估计是死循环,正常跑的程序一般不会出现StackOverflow --------------------编程问答-------------------- 改变算法,网上搜搜 --------------------编程问答-------------------- 了解。 --------------------编程问答-------------------- 所以说,慎用递归,能不用就不用 --------------------编程问答-------------------- 估计楼主也是迫不得已才用 ,溢出: 考虑一下自己的逻辑是否正确 --------------------编程问答-------------------- 我用了Vector和Iterator ,得好好检查自己的代码了.嵌套了有五层. --------------------编程问答-------------------- 还是把代码贴出来看得出问题出在哪.. --------------------编程问答-------------------- 这是一个小的咖啡管理系统,刚学没多久,老师就要求对着UML图,完成类的实现,和系统的实现,工程化方向.就是代码可能比较多.我自己再研究研究. --------------------编程问答-------------------- 递归,很容易StackOverflow,所以能不用递归的地方就不要用 --------------------编程问答-------------------- 我也碰到过类似的情况,确实是递归太深。相当于我的一个函数中调用一个函数,被调用的函数再调用一个函数。而最外层函数始终没有执行完,也就是会说递归的层次数就是你没有执行完的函数数。所以递归总要有个上限的。
换成循环吧。如果自己没把握,可以把功能说出来大家讨论。 --------------------编程问答-------------------- 递归函数很占用资源空间的~~
可以换另一种方法来解决么? --------------------编程问答-------------------- [img=F:\system][/img]
--------------------编程问答-------------------- 我把UML发到相册了. --------------------编程问答-------------------- 递归控制好资源释放的话,没多大问题 --------------------编程问答-------------------- 栈内存也是有空间大小的,你栈中存放的变量太多超过了大小,放不下
这个是你程序的问题,会出现这种问题的程序不行 --------------------编程问答--------------------
两个办法:
1.加大堆栈内存;
2.降低递归层次,比如你有10层,就改进成6层
具体贴代码,我才能帮你改进。
--------------------编程问答-------------------- 可以自己写一个栈类,自己模拟递归中内存中栈的样子,让你的对象入栈出栈就好了,这样看起来清楚点吧,好debug --------------------编程问答-------------------- 那就改变算法 --------------------编程问答--------------------
补充:Java , Java SE