加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 递归函数中堆栈溢出的原因

发布时间:2020-05-24 08:11:32 所属栏目:Java 来源:互联网
导读:在this video大约28分钟的时间里,学生要求Brian Harvey在编写程序时是否应该在递归过程中使用迭代过程.他说没有,因为 Your programs are not gonna run into space limitations. And in terms of locality of whats in memory, you have

在this video大约28分钟的时间里,学生要求Brian Harvey在编写程序时是否应该在递归过程中使用迭代过程.他说没有,因为

Your programs are not gonna run into space limitations. And in terms of locality of what’s in memory,you have to have a lot more control than you do over the way the program is interpreted to really affect that.

由于这不是一个计划课程,我以为他一般都在谈论编程语言.当他说“你的程序不会遇到空间限制.”,他是否忽略了堆栈溢出?我对他的答案感到困惑,因为没有堆栈溢出意味着你已经用完函数调用了空间?我对“地方性”部分一无所知.堆栈溢出可能发生在方案,java和其他语言中.我是正确的还是我误解了他的陈述? 最佳答案 您所指的视频是计算机科学讲座.计算机科学在很大程度上是理论性的,并且解决了许多与实用性无关的计算细节.在这种情况下,正如他在讲座开始时说的那样,今天的计算机体积庞大且足够快,性能很少成为问题.

内存位置与任何语言的StackOverflowExceptions无关.实际上,内存局部性指的是SRAM(静态RAM),它保存了当总线从内存中检索数据时可以带入的相邻数据的缓存(可以是磁盘或RAM).从此缓存中获取数据比从内存中获取数据要快,因此如果多个连续操作所需的所有数据都在缓存中,程序将运行得更快.

现在这都是非常低级的.在大多数(如果不是全部)现代语言(如Java)的背后,有一个编译器正在进行许多低级优化.首先,这意味着您无法在低级别优化代码,尤其是在不干扰编译器优化的情况下.其次,(就像他在你所指的片段之后说的那样),除非你是一个资源密集型游戏,否则不值得花时间去担心性能(除非你有明显的性能问题,但更有可能表示代码中的其他问题).

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读