java递归函数,java递归导致栈溢出的解决办法

我们知道,在编程中如果想让某个业务重复执行,一般有两种实现方式,分别是:递归和循环。在实际编码过程中,我们并不建议使用递归,反而是建议使用循环,这是为什么呢?

递归不当会导致内存溢出

其实不单单是Java,任何一款编程语言,如果递归写法不对,那就可能导致内存溢出!

学过Java的朋友肯定或多或少都听说和了解过栈内存和堆内存,程序在运行时,电脑操作系统会给每个进程都分配有堆内存、栈内存,所分配的堆栈内存都是有上限的,一旦超过了这个上限就会导致内存溢出现象。

为什么递归操作容易导致内存溢出呢?原因主要有以下几点:

  • 递归方法体内,如果终止递归的条件写错了,那可能会导致无限递归,最终导致内存溢出;

  • 即使递归方法及退出递归条件都是正常的,但若递归深度过深(递归次数过多),也会导致栈内存溢出!因为栈的出入规则是先入后出(先入栈的最后再出来),如果递归次数过多就会导致只入栈不出栈,最终栈内存溢出。

递归改循环可以降低内存溢出的可能

注意,递归写法改成循环写法可以降低内存溢出的风险,但这不是绝对的,如果循环写成了死循环一样会导致内存溢出。

递归写法改成循环写法的好处是,不会在短时间内出现栈的只入不出现象,所以可以规避栈内存溢出现象。

原创文章,作者:普尔小编,如若转载,请注明出处:http://www.puerpx.cn/pxwd/2455.html

(1)
上一篇 2022-05-30 下午2:59
下一篇 2022-05-30 下午3:12

相关推荐

  • 成都培训网,成都培训机构怎么样

    家长你好,给孩子选择补习班要综合考虑师资力量,教学质量,管理模式,还有校区环境,当然,和家里的距离这个也要考虑一下。 最重要的就是师资力量这一块,学生既然已经有了补课的需求,那么必…

    培训问答 2022-05-22
  • 考研数学辅导班,考研数学辅导哪家好网课

    考研数学班的话一般都是出辅导资料的那几个老师的。 现在来说,基本上在市面上很出名的就是张宇,李永乐,李林这些老师,可能我没有说完的,这种就不用在意了。 每个人的特点,或者说他们的教…

    培训问答 2022-05-14
  • 如何理解因素分析法(因素分析法教学)

    一、因素分析法包括连环替代法和差额分析法。这两个都可以用,只是连环替代法计算比较繁琐,差额分析法是比较简化。   连环替代法是顺次用各因素的比较值替代基准值,然后测算各因素对分析指…

    培训问答 2023-03-09
  • 大思英语暑假班怎么报名

    题主问应该是想利用暑假时间好好学英语 不管你是出于什么目的想要学英语,暑假的时间如果高效利用的话都会有一个很大的进步 小优认为暑假报一个英语班,英语水平提高效果会更好一点。 不知道…

    培训问答 2022-11-28
  • 大专什么专业比较好一些

    首先看你选择的学校是什么类型的,学校实力以及知名度高的是哪个专业,现在热门专业是哪一个?都要去看,去了解,如果你非要去财经学院学土木,去艺术学院学汽修,那就是你自己的问题了,目前主…

    培训问答 2023-02-26
  • 恨老公和他一家人的婚姻怎么办(为什么特别恨老公和他家人)

    那么我们就要知道,是你老公还有他一家人做了哪些事伤了你的心?你们之间的相处模式是怎样? 我们很恨老公和恨他们一家人,那么他们对我们是一个怎样的评价?有的时候是会互相怨恨的,牢记一个…

    培训问答 2023-07-01
  • 太原有哪些好的私立高中,太原私立高中收费

    太原市私立高中比较有名的便是太原市五育中学了,是太原五中的公参民学校,所以共享着五中的教育资源,也有着五中的办学理念,既有初中又有高中,高中部在青年路58号校区。学生的压力相对不大…

    2023-07-07
  • 千万别上景德镇学院

    大热天,我们正在为该校建设奋斗…[捂脸][捂脸][捂脸][捂脸]

    培训问答 2022-05-13
  • 商务礼仪培训

    1、举止礼仪:举止礼仪是自我形成的表现,一个人的外在举止行动可直接表明他的态度。做到彬彬有礼,落落大方,遵守一般的进退礼节,尽量避免各种不礼貌、不文明习惯。 2、言谈礼仪:说话时要…

    2022-05-20
  • 想参加美术艺考应该去什么画室好

    以下建议,仅供参考,因为凡事皆有例外! 首先对自己要有个定位,对自己学校也要有个定位,然后再定位要去什么样的画室。 对自己的定位:天赋如何,基础如何,用心程度如何,吃苦能力如何,甚…

    2023-02-11

发表回复

登录后才能评论