递归调用转换为堆栈操作能提高效率吗?

joeln 2000-08-31 09:42:00
曾经看过一些数据结构的书中讲可把递归调用转换为堆栈操作,
因为有些问题用递归的思路非常容易构造算法,但递归调用太耗时,
而且占用大量的系统堆栈。使用自己定义的堆栈结构和栈操作能
比系统自己的堆栈效率更高吗?
另外,如何保证递归调用不会造成系统堆栈溢出?
...全文
287 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bright5 2001-08-01
  • 打赏
  • 举报
回复
一般说来递归本身就是用堆栈的,所以不必说递归转成堆栈。
其实,正是由于递归用了堆栈,所以效率才慢,因为遍历所有元素,所以想优化算法,一般将递归转成非递归较好。
第二个问题,我想增加一个判断条件就可以了。
jhb 2000-08-31
  • 打赏
  • 举报
回复
可以。因为递归在实现上就是用栈的,只是系统必需保证通用性,效率应该没有自己实现的高。只是在实现上的优化要认真做才行。溢出问题我想不同的系统和语言有不同的方案的,要具体而言。
jhb 2000-08-31
  • 打赏
  • 举报
回复
从数学上来说,递归是可以转化为等价的循环的。所使用的数据按栈的方式进出,不会有插入操作啊,当然数组好的多了。同时还涉及到你程序的优化。
joeln 2000-08-31
  • 打赏
  • 举报
回复
怎样构造栈才算优化呢?用链表结构还是数组结构好?

33,006

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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