所有的递归算法是否都可以转化为非递归算法?

赵牧野 2017-03-01 08:24:06
都知道递归算法很消耗资源,数据量大时根据不具有价值,而且不易于阅读。
...全文
1589 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵牧野 2018-12-06
  • 打赏
  • 举报
回复
引用 4 楼 带你撸出一手好代码 的回复:
递归的可读性比较强, 函数式编程语言都采用递归解决问题的。 递归的效率是存在的问题,拿java来说, 一个函数调用在虚拟机中会创建一个栈帧, 里面还有局部变量表, 占用空间, 所以从性能考虑不应使用递归 。 但是现代的编译器对递归的优化已经做的比较好了, 写成尾递归, 在编译器将代码转换为机器码时,会变成普通循环来执行的
我最近也对jvm研究了下,递归算法改成非递归往往也需要一个栈的数据接口存储数据。效果最后差不多。
computerclass 2017-03-02
  • 打赏
  • 举报
回复
所有的递归算法都可以转化为非递归算法,数据结构上讲的有
ps45221 2017-03-02
  • 打赏
  • 举报
回复
可以。 插一句,递归算法是比较耗资源,当递归层次太深时,容易造成爆栈,但是递归算法应该是好理解的把。 非递归算法,才不好理解把。
挨踢直男 2017-03-02
  • 打赏
  • 举报
回复
递归的可读性比较强, 函数式编程语言都采用递归解决问题的。 递归的效率是存在的问题,拿java来说, 一个函数调用在虚拟机中会创建一个栈帧, 里面还有局部变量表, 占用空间, 所以从性能考虑不应使用递归 。 但是现代的编译器对递归的优化已经做的比较好了, 写成尾递归, 在编译器将代码转换为机器码时,会变成普通循环来执行的
李德胜1995 2017-03-02
  • 打赏
  • 举报
回复
递归算法都可以转化为非递归算法,但效率低下,谨慎使用

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧