首页 > C > 递归 阅读:57,774

递归优缺点

< 上一页 递归遍历树 递归算法应用 下一页 >

一般来说,递归的时间复杂度和对应的非递归差不多,但是递归的效率是相当低的。次数不超过一定时候的情况下速度比迭代版本慢,比如二路归并内排序、二分查找等算法的实用实现都用迭代而不用递归。因为它主要花费在反复的函数调用和进栈出栈,各种中断等机制上。更有甚者,在递归求解过程中,某些解会重复的求好几次,这是不能容忍的,这些也是引入非递归机制的原因之一。递归如果嵌套过深,会造成栈溢出(为了防止栈溢出,可以跟踪栈的深度,如果超过某个深度,就返回)。

内核是不能使用递归,因为内核栈只有几KB到几十KB,栈很容易溢出。

递归看做到楼顶取东西。从一楼爬,看,不是的,继续爬,每层楼梯看上去都一样,你执行的过程都一样,但是实际上,1223的楼梯是两个楼梯,等你到楼顶了,取了东西,你不能直接就跳楼,还得从楼顶一层层退回来。而驴子拉磨,则属于for循环。无论跑多少次,都是在原地。变化的只是磨盘里磨的东西,而不是驴每圈所在的不同位置。

< 上一页 递归遍历树 递归算法应用 下一页 >

周哥教IT,分享编程知识,提高编程技能,程序员的充电站。跟着周哥一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

当你决定关注「周哥教IT」,你已然超越了90%的程序员!

IT黄埔-周哥教IT技术交流QQ群:213774841,期待您的加入!

二维码
微信扫描二维码关注