社区
数据结构与算法
帖子详情
递归调用转换为堆栈操作能提高效率吗?
joeln
2000-08-31 09:42:00
曾经看过一些数据结构的书中讲可把递归调用转换为堆栈操作,
因为有些问题用递归的思路非常容易构造算法,但递归调用太耗时,
而且占用大量的系统堆栈。使用自己定义的堆栈结构和栈操作能
比系统自己的堆栈效率更高吗?
另外,如何保证递归调用不会造成系统堆栈溢出?
...全文
296
4
打赏
收藏
递归调用转换为堆栈操作能提高效率吗?
曾经看过一些数据结构的书中讲可把递归调用转换为堆栈操作, 因为有些问题用递归的思路非常容易构造算法,但递归调用太耗时, 而且占用大量的系统堆栈。使用自己定义的堆栈结构和栈操作能 比系统自己的堆栈效率更高吗? 另外,如何保证递归调用不会造成系统堆栈溢出?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bright5
2001-08-01
打赏
举报
回复
一般说来递归本身就是用堆栈的,所以不必说递归转成堆栈。
其实,正是由于递归用了堆栈,所以效率才慢,因为遍历所有元素,所以想优化算法,一般将递归转成非递归较好。
第二个问题,我想增加一个判断条件就可以了。
jhb
2000-08-31
打赏
举报
回复
可以。因为递归在实现上就是用栈的,只是系统必需保证通用性,效率应该没有自己实现的高。只是在实现上的优化要认真做才行。溢出问题我想不同的系统和语言有不同的方案的,要具体而言。
jhb
2000-08-31
打赏
举报
回复
从数学上来说,递归是可以转化为等价的循环的。所使用的数据按栈的方式进出,不会有插入操作啊,当然数组好的多了。同时还涉及到你程序的优化。
joeln
2000-08-31
打赏
举报
回复
怎样构造栈才算优化呢?用链表结构还是数组结构好?
数据结构:利用栈,将
递
归
转换
为非
递
归的方法
利用栈将
递
归
转换
为非
递
归 对于一般的
递
归过程,仿照
递
归算法执行过程中
递
归工作栈的状态变化,可直接写出相应的非
递
归算法。 步骤 第一次
调用
的参数push进
堆栈
,原有
递
归代码外层加一个while循环,判断条件就是...
将
递
归函数
转换
为非
递
归形式
1.
递
归的
调用
原理:分而治之 为求一个大规模问题的问题,可以: (1)将原问题划分成若干子问题 (2)子问题规模小到一定程序,可以直接求解,即存在
递
归终止的条件,称做
递
归出口。 (3)原问题分解的子问题总会...
C++算法篇
递
归
调用
(函数
调用
自身)
要理解运用
递
归要学习理解下面几个问题: ...在数学与计算机科学中,
递
归是指在函数的定义中
调用
函数自身的方法。实际上
递
归其包含了两个意思:
递
和 归,这正是
递
归思想的精华所在。 大师 L. Peter...
如何将
递
归
转换
为循环
首先找到
递
归的结束条件,并且每次
递
归
调用
肯定是逼近结束条件(Base Case) 实现一个相同结束条件的循环,每次循环逼近结束条件 public class CountDown { public void countDown(int n) { if(n == 0) return; ...
3.7栈与
递
归(下)----
递
归与非
递
归
转换
3.7栈与
递
归(下)----
递
归与非
递
归
转换
...其一,有利于
提高
算法时空性能,因为
递
归执行时需要系统提供隐式栈实现
递
归,
效率
较低。 其二,无应用
递
归语句的语言设施环境条件,有些计算机语言不支持
递
归功 能,如 FO
数据结构与算法
33,009
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章