递归算法以及模拟递归真令人头痛啊高手指点一下

jy02745307 2011-08-13 03:32:59
最近在递归问题上花了不少时间,似懂非懂的。好郁闷啊。编程时候基本可以用递归算法。至于运行的顺序也貌似理解了。但是又好像不理解好头痛啊。关于用栈模拟递归算法。看书上介绍递归算法运行时栈貌似也明白,可是一看到用代码模拟递归头就大。似懂非懂的。头脑好混乱了。

那位高手指点一下。特别是可以介绍一下你们以前学习的有关方面的经验,或是你们以前学习过程中有哪些难关是怎么跨越的。详细点啊谢谢
...全文
350 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
work_sunzh 2011-10-06
  • 打赏
  • 举报
回复
递归感觉主要基于两点:
1.找到递归结束的条件
2.将动态改变的值,再传给本方法进行下一次调用。
我认为不管怎么使用,最后你对递归的理解就是这两句话。
Smile_Tiger 2011-08-23
  • 打赏
  • 举报
回复
实际应用上,我就遍历目录里面的文件时用了递归。
OO_is_just_P 2011-08-21
  • 打赏
  • 举报
回复
去看看Erlang吧,基本全是递归。
stand_by 2011-08-19
  • 打赏
  • 举报
回复
bucuo
langga跳跃 2011-08-18
  • 打赏
  • 举报
回复
我说说我的理解:递归包括两个过程:递推和返回!
递推也就函数自调用一直往里层调用,最外层的函数对应一个堆栈,每递推调用一次,可以理解为把当前的调用点位置保存在堆栈中,然后层层一直调用,知道条件满足到不能递推为止,返回也就是最后调用的那个最里层函数返回,堆栈保存该函数的调用点地址内存清空,可以理解为返回就是把堆栈中值先进出,最后结果把堆栈内存回收。
zhangyilina1987 2011-08-18
  • 打赏
  • 举报
回复
我也有同感啊,不是很理解
justlovetao 2011-08-15
  • 打赏
  • 举报
回复
递归,恩,我一年前也是你现在的状态。高了一年的ACM,逼得自己弄题目。
虽然递归很费时间,但是一旦学会了也是蛮好用的。而且,学习的过程能够锻炼学习的能力。

我给我的建议吧:感觉自己不够聪明,所以笨鸟先飞吧。可以说有一个月饿每天日思夜想的弄递归,想它的流程。不要认为能看懂递归函数就行了,这和自己学出来的完全是两码事。所以只有不停地啃递归的过程,再在关闭数的情况下实现每一个递归题目,然后再是去左递归的题目。大概半个月就有明显感觉。熟练运用还得加强练习。
不过我认为递归应用的范围确实有限,所以我只推荐把递归当做很好的锻炼自学能力的一种方式
phoenix_share 2011-08-13
  • 打赏
  • 举报
回复
比如做一件事情有N个相同的步骤,只是参数不是完全一样,首先为了得到这个最终结果,我知道最后一步(第N步)怎么做,但是就差一个条件,那就是第N-1步的结果.那么我就把这个N-1步这个结果用个符号表示.去设计好做第N步这个函数.最后把那个符号替换成你设计的这个函数自调用就OK了.值得注意的就是你设计的这个函数一定要有结束条件以及递归参数的变化.
stein42 2011-08-13
  • 打赏
  • 举报
回复
递归和迭代是等价的,
LucEaspe 2011-08-13
  • 打赏
  • 举报
回复
递归:浪费堆栈,数据大易出问题
迭代:用 空间 换取 时间
szjarvis 2011-08-13
  • 打赏
  • 举报
回复
跟楼主一样的糟遇.
Jokul_Lee 2011-08-13
  • 打赏
  • 举报
回复
感觉递归用在特殊的算法里效果还比较好,平常都是用迭代,单递归的感觉和while()有点像
绿色夹克衫 2011-08-13
  • 打赏
  • 举报
回复
多用就好了,做一些备忘录方式的搜索题,很快就能掌握。
jy02745307 2011-08-13
  • 打赏
  • 举报
回复
就识学习而已现在先不研究递归算法好不好我是想知道怎么去完全弄懂他
cnmhx 2011-08-13
  • 打赏
  • 举报
回复
递归一定要尽量避免。因为实际情形是——经常花费更多的计算时间。

33,006

社区成员

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

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