社区
数据结构与算法
帖子详情
不是很懂递归和直接使用栈的效率问题
qweqweqwexdd4
2012-10-09 07:39:25
以前自学过数据结构,知道怎么使用栈来实现递归,而且书上写的是,用栈实现递归的话效率比较高,我比较疑惑,因为编译器也是对递归用栈来模拟的,只是方法比较通用的,效率会比较低,那么有必要自己对每一个递归都用栈来实现吗,主要是这段递归代码会运行非常多的次数。
...全文
167
4
打赏
收藏
不是很懂递归和直接使用栈的效率问题
以前自学过数据结构,知道怎么使用栈来实现递归,而且书上写的是,用栈实现递归的话效率比较高,我比较疑惑,因为编译器也是对递归用栈来模拟的,只是方法比较通用的,效率会比较低,那么有必要自己对每一个递归都用栈来实现吗,主要是这段递归代码会运行非常多的次数。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
WizardOz
2012-10-10
打赏
举报
回复
自己用栈来模拟递归的话,只有和算法相关的数据需要入栈;如果直接递归的话,一些函数的状态,局部变量什么的会入栈。
换句话说,就是入栈数据多少的问题吧。
不过个人觉得,这个并不是一个数量级的差别,从空间复杂度的角度讲,是一样的。所以如果是我写程序的话,一般会直接递归调用。
qweqweqwexdd4
2012-10-10
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
自己用栈来模拟递归的话,只有和算法相关的数据需要入栈;如果直接递归的话,一些函数的状态,局部变量什么的会入栈。
换句话说,就是入栈数据多少的问题吧。
不过个人觉得,这个并不是一个数量级的差别,从空间复杂度的角度讲,是一样的。所以如果是我写程序的话,一般会直接递归调用。
[/Quote]
谢谢解答,同时感谢2楼
mkcing
2012-10-09
打赏
举报
回复
这个和内存管理有关,程序的内存分为栈区和堆区,好像维护堆区比较费时间
qweqweqwexdd4
2012-10-09
打赏
举报
回复
顺便问一下,对于布尔型变量,使用bool的好,还是BOOL的好,32位的cpu的话,因为这类变量也会用很多次。
递归
入门、
递归
遍历、
递归
穷举算法
本课程带你从
递归
算法基础入手,课程是精讲大量实际项目中常用到的案例,课程深入浅出,包括
递归
入门,
递归
遍历、弟归穷举算法及各种项目,适合算法爱好者一起学习,后附每堂课项目源码,感兴趣可以观注博客,不定期...
非
递归
,不用
栈
实现二叉树中序遍历
这个
问题
的实现就是迭代器
问题
,无论是Java还是C++,利用迭代器遍历树节点(Java中是TreeMap类,C++中是map类)都
使用
了中序遍历,且无法
使用
递归
和
栈
,算法
效率
近似为O(1),不可能每个节点只访问一次。 纯C实现的...
算法中的
递归
和尾
递归
可能也有一大部分人知道
递归
,也能看的
懂
递归
,但在实际做题过程中,却不知道怎么
使用
。今天,我们就来说一说
递归
算法的
使用
。 什么是
递归
递归
,在数学与计算机科学中,是指在函数的定义中
使用
函数自身的方法。也...
计算机在执行
递归
算法时
效率
低 为什么,
递归
为什么那么慢?
递归
的改进算法...
大家都知道
递归
的实现是通过调用函数本身,函数调用的时候,每次调用时要做地址保存,参数传递等,这是通过一个
递归
工作
栈
实现的。具体是每次调用函数本身要保存的内容包括:局部变量、形参、调用函数地址、返回值。...
编程方式:
递归
它太普遍了,并且用它来解决
问题
非常的优雅,但它又不是那么容易弄
懂
,所以我特意用一篇文章来介绍它。 一、「
递归
」是什么?
递归
就是指函数
直接
或间接的调用自己,
递归
是基于
栈
来实现的。
递归
的经典例子就是...
数据结构与算法
33,010
社区成员
35,327
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章