以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 计算机考研交流 』   (http://bbs.xml.org.cn/list.asp?boardid=67)
----  关于数据结构中递归问题的非递归算法  (http://bbs.xml.org.cn/dispbbs.asp?boardid=67&rootid=&id=53835)


--  作者:碧海晴天
--  发布时间:10/15/2007 9:40:00 PM

--  关于数据结构中递归问题的非递归算法
这东西重要吗? 明明递归两三行代码就搞定的东西 非得搞出个几十行的非递归算法
不找抽吗? 谁没是发明的

谁有数据结构的复习重点阿 就是个章节要点 考点之类的东西


--  作者:蝶影
--  发布时间:10/15/2007 10:04:00 PM

--  
1."这东西重要吗? 明明递归两三行代码就搞定的东西 非得搞出个几十行的非递归算法
  不找抽吗? 谁没是发明的"
  在你下这样的结论之前,请先看看下面的这个链接:
  http://zhidao.baidu.com/question/30061045.html?si=3
2.今年出的DS大纲:http://www.ieee.org.cn/dispbbs.asp?boardID=67&replyID=111637&ID=53464&skin=1
--  作者:lionx
--  发布时间:10/16/2007 8:47:00 AM

--  
解决1,000个盘子的汉诺塔问题,你用递归和非递归方法试试,哪个方法你的电脑能做出来?
100,000个呢?
大多一般的电脑用递归算法收系统堆栈的限制,否则要巨型机干什么
--  作者:zhongyuan17
--  发布时间:10/16/2007 2:48:00 PM

--  
这个..1000个盘子的汉诺塔怎么也做不出来吧..
--  作者:lionx
--  发布时间:10/16/2007 3:53:00 PM

--  
是做不出来,是时间问题,只不过理论上在桌面级操作系统下,非递归算法在有限时间内能给出答案,但递归算法可能会报堆栈溢出。
只是估计,没有试过哈哈哈
--  作者:Logician
--  发布时间:10/16/2007 4:21:00 PM

--  
这个例子举得不太恰当啊.....
1000个盘子的汉诺塔需要移动2^1000 - 1次,光这个输出就。。。。。。
这个例子的主要问题是,汉诺塔问题的输出长度本来就是指数级增长的,相比之下,堆栈浪费的空间就算不了什么了。。。

我觉得一个比较经典的例子是分别用递归和非递归求Fibonacci数列的第n个数(虽然这个例子体现的主要不是堆栈这个形式本身带来的问题)。。。
另一个经典的例子是用递归和非递归算阶乘(这个例子比较能体现递归在“冗余存储”和“系统堆栈溢出”方面的弊端)。
一个现实一点的例子:我记得以前用递归实现快速排序,当排序数据多到10亿这个数量级的时候,系统就溢出了。。。
当你需要在现实的系统上处理海量数据时,一些理论上无足轻重的问题也成了必须解决的难题,这时,你就能发现非递归的好处了。。。


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms