递归与非递归算法??

kaiseer8828 2013-01-11 03:41:30
今天看数据结构,看到有将递归算法转换为非递归算法, 可是计算机不是本身就是用栈来存储函数,本身就是用非递归方法处理的递归函数吗? 为什么我们还要自己转成非递归算法???
...全文
253 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hello.thanks 2013-01-23
  • 打赏
  • 举报
回复
递归不太好用,难把握
dingqiang107 2013-01-23
  • 打赏
  • 举报
回复
编译器对递归算法的优化有许多限制。
amdgaming 2013-01-19
  • 打赏
  • 举报
回复
递推比较容易理解,但是递归 时间复杂度太大,做了很多多余的工作,甚至会导致stackoverflow
wizard_tiger 2013-01-16
  • 打赏
  • 举报
回复
引用 1 楼 tkminigame 的回复:
一般程序调用方法的栈,和你自己建立的数据结构的栈,在不同的内存段,拿张os系统的内存分配图看一下,你会发现,基本每个系统供程序调用的栈的空间都是有限的。这意味着每个系统对每个调用程序的分配的栈空间都是有限的。有些系统允许你去改动这个限制,但总的来说,它是有限的。 一般编程都不鼓励使用递归,不仅是效率问题,更严重的是有可能发生运行时错误,也就是程序崩溃。而你为数据分配……
++
阿麦 2013-01-14
  • 打赏
  • 举报
回复
递归和人的思维比较接近。我的感觉。 比如遍历树或快速排序,用递归很好理解,非递归就看起来麻烦。
iceheart 2013-01-11
  • 打赏
  • 举报
回复
stl里递归也照用不误
cnmhx 2013-01-11
  • 打赏
  • 举报
回复
有时候,递归算法的计算复杂性要大于非递归的。 有些算法要求有显式表示,这时只能用非递归算法。
tkminigame 2013-01-11
  • 打赏
  • 举报
回复
一般程序调用方法的栈,和你自己建立的数据结构的栈,在不同的内存段,拿张os系统的内存分配图看一下,你会发现,基本每个系统供程序调用的栈的空间都是有限的。这意味着每个系统对每个调用程序的分配的栈空间都是有限的。有些系统允许你去改动这个限制,但总的来说,它是有限的。 一般编程都不鼓励使用递归,不仅是效率问题,更严重的是有可能发生运行时错误,也就是程序崩溃。而你为数据分配的空间就不一样了,那个空间基本只受两个条件限制:1.计算机的位宽,也就是寻址范围,2.计算机本机的内存限制

33,008

社区成员

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

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