永发信息网

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

答案:4  悬赏:40  手机版
解决时间 2021-02-03 19:59
各位大哥大姐受累解释下,全面些,谢谢
最佳答案
递归好处:代码更简洁清晰,可读性更好
递归可读性好这一点,对于初学者可能会反对。实际上递归的代码更清晰,但是从学习的角度要理解递归真正发生的什么,是如何调用的,调用层次和路线,调用堆栈中保存了什么,可能是不容易。但是不可否认递归的代码更简洁。一般来说,一个人可能很容易的写出前中后序的二叉树遍历的递归算法,要写出相应的非递归算法就比较考验水平了,恐怕至少一半的人搞不定。所以说递归代码更简洁明了。

递归坏处:由于递归需要系统堆栈,所以空间消耗要比非递归代码要大很多。而且,如果递归深度太大,可能系统撑不住。
全部回答
递归是一些问题(例如上面两位提到的Tower of Hanoi、二叉树遍历、阶乘等)的自然模拟,好处是代码易读、易懂。 递归的缺点是代码效率低。因为递归需要额外的栈空间,当递归层次深的时候,效率代价比较明显。
用递归对于解决一些问题很方便,有些问题必须使用递归,例如汉诺塔问题。 我们现在学的二叉树有些算法都是用递归写的,写很方便,只是感觉不好理解,得细细分析。总之,很方便,只是算法效率太低,时间复杂度太高,所以在可以是用非递归算法的情况下最好不要使用递归。
好像麻烦 没什么作用啊!阶乘我有for循环照样实现又简单! int f(int n)//实现阶乘参数 { int tem = 1; for(;n>0;n--) { tem*=n; } return tem; }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
风行汽车淄博东联博山直营店地址在什么地方,
2010年7月我国西北地区某城市新城区发生强降
求各路高手帮忙,测固体的PH值一般要配成百分
东风悦达·起亚博山店怎么去啊,我要去那
吹沙的意思是什么啊?知道的请说下!
重庆交通职业学院地址有知道的么?有点事想过
喝咖啡浓度过高怎么办?
英语翻译翻译内容:“简单说明园林树木的整形
同心堂药房前进路连锁店我想知道这个在什么地
鹿晗介意比自己小十几岁的女孩吗
你好,我想问一下,我家有低保,我有及其特殊
广汽众智成博山店地址在什么地方,我要处理点
司户的意思是什么啊?知道的请说下!
【潍县署中画竹呈年伯包大中丞括】跪求:潍县
云南泸西凉米线汤料
推荐资讯
0.625减8分之3等于几分之几?
怎么挑选甜玉米?
遵义市警察在明知证据不足故意制造冤案向哪个
女情人要跟她老公生小孩去了,不在和我了,我
带有一个聪一个慧的情感说说
【好字组词】好字的两个读音组词
跟一个女生表白过了,刚刚她问我我学校附近哪
微信上的手机通讯录如何解除
请问Rothmans是什么意思?
一个汉字和一个英文字符在微型机中存储时所占
我是一名高一的学生想知道如何学好化学,请老
街头篮球PF欧菲莉亚
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?