开发者社区> 问答> 正文

C语言递归有什么用处,又有什么缺点

各位大哥大姐受累解释下,全面些,谢谢

展开
收起
知与谁同 2018-07-22 16:20:52 2300 0
4 条回答
写回答
取消 提交回答
  • 12535
    递归是一些问题(例如上面两位提到的Tower of Hanoi、二叉树遍历、阶乘等)的自然模拟,好处是代码易读、易懂。

    递归的缺点是代码效率低。因为递归需要额外的栈空间,当递归层次深的时候,效率代价比较明显。
    2019-07-17 22:55:06
    赞同 展开评论 打赏
  • 用递归对于解决一些问题很方便,有些问题必须使用递归,例如汉诺塔问题。
    我们现在学的二叉树有些算法都是用递归写的,写很方便,只是感觉不好理解,得细细分析。总之,很方便,只是算法效率太低,时间复杂度太高,所以在可以是用非递归算法的情况下最好不要使用递归。
    2019-07-17 22:55:06
    赞同 展开评论 打赏
  • 递归好处多多啊。能解决很多复杂的问题,代码效率高。比如汉诺塔问题。缺点是存储空间开销大。
    能不用就不用了。
    2019-07-17 22:55:06
    赞同 展开评论 打赏
  • 递归好处:代码更简洁清晰,可读性更好
    递归可读性好这一点,对于初学者可能会反对。实际上递归的代码更清晰,但是从学习的角度要理解递归真正发生的什么,是如何调用的,调用层次和路线,调用堆栈中保存了什么,可能是不容易。但是不可否认递归的代码更简洁。一般来说,一个人可能很容易的写出前中后序的二叉树遍历的递归算法,要写出相应的非递归算法就比较考验水平了,恐怕至少一半的人搞不定。所以说递归代码更简洁明了。

    递归坏处:由于递归需要系统堆栈,所以空间消耗要比非递归代码要大很多。而且,如果递归深度太大,可能系统撑不住。
    2019-07-17 22:55:06
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
用RxSwift写易维护易读的愉悦代码 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载