社区
数据结构与算法
帖子详情
递归调用转换为堆栈操作能提高效率吗?
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
打赏
举报
回复
怎样构造栈才算优化呢?用链表结构还是数组结构好?
递归入门、递归遍历、递归穷举算法
本课程带你从递归算法基础入手,课程是精讲大量实际项目中常用到的案例,课程深入浅出,包括递归入门,递归遍历、弟归穷举算法及各种项目,适合算法爱好者一起学习,后附每堂课项目源码,感兴趣可以观注博客,不定期...
数据结构:利用栈,将递归
转换
为非递归的方法
利用栈将递归
转换
为非递归 对于一般的递归过程,仿照递归算法执行过程中递归工作栈的状态变化,可直接写出相应的非递归算法。 步骤 第一次调用的参数push进
堆栈
,原有递归代码外层加一个while循环,判断条件就是递归结束的条件。
递归调用
的地方改成push(); continue; 直到遇到递归终止条件,退出递归运算所在循环,再用一个新的循环做出栈
操作
并计算,将递归代码中的return改成pop并执行响应的计算,直到栈空为止。就可以了。 完整描述: (1) 设置一个工作栈存放递归工作记录(包括实参、 返回地址
将递归函数
转换
为非递归形式
转自 :https://blog.csdn.net/sunny_ss12/article/details/47095381 1. 递归的调用原理:分而治之 为求一个大规模问题的问题,可以: (1)将原问题划分成若干子问题 (2)子问题规模小到一定程序,可以直接求解,即存在递归终止的条件,称做递归出口。 (3)原问题分解的子问题总会向递归出口靠拢 (5)子问题求解后,可以将子问题求得的解...
C++算法篇
递归调用
(函数调用自身)
要理解运用递归要学习理解下面几个问题: 什么是递归? 递归的精髓(思想)是什么? 递归和循环的区别是什么? 什么时候该用递归? 使用递归需要注意哪些问题? 递归思想解决的几个经典的问题? 1、递归概念: 德罗斯特效应就是说,你拿着一面镜子,然后再站在一面镜子前面,让两面镜子相对。你看到镜子里面的情景,是相同的,无限循环的。 在数学与计算机科学中,递归是指在函数的定义中调用函数自身的方法。实际上递归其包含了两个意思:递 和 归,这正是递归思想的精华所在。 大师 L. Peter...
汉诺塔的非递归实现(借助
堆栈
模拟递归)
汉诺塔的非递归实现 借助
堆栈
以非递归(循环)方式求解汉诺塔的问题(n,a,b,c)。即将n个盘子从起始柱(标记为“a”)通过借助柱(标记为“b”)移动到目标杜(标记为“c”),并保证每个移动符合汉诺塔问题的要求。 思路分析 汉诺塔问题求解的基本思路是,不断将n个盘的汉诺塔问题
转换
为2个n-1盘的汉诺塔问题,因此用递归实现是很自然的方法。当把n盘问题
转换
为n-1 盘问题时,问题的起始柱子和目标柱子也发生了变化。设n盘问题为(n,a,b,c),其中参数如实验内容中所定义,则问题的求解可
转换
为对(n-1,a,c,
数据结构与算法
33,006
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章