C语言中使用递归是提高了运行速度还是降低了?

作者&投稿:舟勉 (若有异议请与网页底部的电邮联系)
C语言中的递归是什么意思~

递归就是 函数自己调用自己 ..
第一个是主函数 ..
第二个cj()函数才是一个递归函数 ..
在cj()函数体里面 有cj(n--)这个语句 就是它再次调用自己 只不过参数变化了 ..

递归函数有三点要求:
1,递归的终止点,即递归函数的出口
2,不断的递归调用自身
3,递归函数主体内容,即递归函数需要做的事情
ps:3一般可以放在2的前面或者后面,一般1放最前面。另外,2和3可以根据不同的需要合并,比如,有时候递归函数的主体就是返回调用下层函数所得到的结果。
具体例子如下:
void fun(int n){ if(n<=0) return; //1 这是递归的终点,即出口 fun(n-1); //2、递归函数自身的调用 cout<<n<<endl; //3 递归函数的主体内容}
2,3合并的情况
int fun(int n){ if(n<=0) return 0; return fun(n-1)+fun(n-2); //2 3合并}

非递归和递归之间
1速度。递归函数是在不断的调用本身的函数,一般函数的调用.返回,是比较费时间的,尤其是在递归深度较大时。所以个人觉得非递归的速度较好。
2.空间。递归函数很明显,始终是在入栈,只有在最后才出栈,大量的浪费了堆栈空间。在这一点上非递归肯定要比递归好。
总结。个人认为递归函数只是在程序书写上简单明了,但实际运行个人不看好。
一个是O(N) 一个是O(N*N)

循环的要比递归的效率更高
递归的存在每次要调用一次的过程。而且要取返回值。

循环是N,递归是N的平方。

当然是迭代好,内存小,速度快

递归要不断的进栈出栈,当然降低了速度


递归的定义是什么
?递归是指函数或过程或子程序在运行过程序中直接或间接调用自身而产生的重入现象。在计算机编程里,递归指的是一个过程:函数不断引用自身,直到引用的对象已知。使用递归解决问题,思路清晰,代码少。但是在主流高级语言中(使用递归算法要耗用更多的栈空间,所以在堆栈尺寸受限制时,应避免采用。所有的递归...

c语言中函数能否嵌套调用和递归调用
例如,我们可以使用递归来计算一个数的阶乘。假设我们有一个函数factorial,它接受一个整数n作为参数。如果n等于0,函数返回1。否则,函数返回n乘以的阶乘。这就是一个递归调用的例子,因为函数factorial在其定义中调用了自身。总的来说,C语言中的函数能够进行嵌套调用和递归调用,这为编程提供了极大的...

什么是递归?递归有什么用?
1、程序调用自身的编程技巧称为递归。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大...

英语语言学中的递归性 是指什么 它和二重性有没有联系 感激涕零_百度...
二重性:是指拥有两层结构的这种特性,底层结构是上层结构的组成成分,每层都有自身的组合规则.在英语中,主要是指一个单词又两层含义,一层就是这个单词本身的读音,令一层含义就是这个单词的内涵意义。而递归性:是指语言结构层次和言语生成中相同结构的重复或相套。如:I know that you know that i...

c语言中函数能递归吗?
C语言可以递归调用,但是(函数)不能嵌套定义。例如:int fact(int n){ if (n == 0) return 1; else return n * fact(n - 1);}图中的递归调用是允许的。而:void foo(){ void bar() { \/\/ Some code }}这样在函数内定义函数是不允许的。不过结构体是可以嵌...

讲一下c语言中递归函数的使用方法
递归函数有三点要求:1,递归的终止点,即递归函数的出口 2,不断的递归调用自身 3,递归函数主体内容,即递归函数需要做的事情 ps:3一般可以放在2的前面或者后面,一般1放最前面。另外,2和3可以根据不同的需要合并,比如,有时候递归函数的主体就是返回调用下层函数所得到的结果。具体例子如下:void...

c语言中,什么是函数的递归,能举个例子么
} } 注: 以上代码只是用来演示递归,不包含错误校验。在实际生产过程中。该代码不够健壮。如此,就完成了递归。你就可以求得第n个数了。何时考虑使用递归。当你分析一个问题的时候,发现这个问题,是一个自我循环时,而且这个自我循环到一个给定值,就可以终止的时候,你就快要考虑递归了。

c语言中嵌套调用和递归调用的区别
一、作用不同:函数嵌套允许在一个函数中调用另外一个函数,比如有三个函数 例:funca() { funcb(); } funcb() { funcc(); } funcc() {cout << "Hello" <<endl; }这个就叫做嵌套调用,它是一个语言提供的程序设计的方法,也就是语言的特性。递归调用是一种解决方案,在程序中,递归...

用递归求表达式1-2+3-4……-100的和(注:C语言)
可以使用递归来实现对表达式 `1-2+3-4……-100` 求和。递归算法的基本思路是将一个大问题分解成多个相同或类似的小问题,然后将这些小问题按照一定规律组合成大问题的解。对于这道题,可以将表达式 `1-2+3-4……-100` 分解成两个子问题:- 1-2+3-4……-98-99+100 - -99+100 然后对...

什么情况下要用到递归算法?C语言中的
并且小到一定程度可以直接得出它的解,从而得到原来问题的解。利用递归算法解题,首先要对问题的以下三个方面进行分析:把这些步骤或等式确定下来。 把以上三个方面分析好之后,就可以在子程序中定义递归调用。记得C里面有一个汉诺塔,就是非用递归才能解决的一个问题!可以仔细理解一下哦!

景泰县17328509106: C语言中使用递归是提高了运行速度还是降低了? -
采豪施乐: 非递归和递归之间 1速度.递归函数是在不断的调用本身的函数,一般函数的调用.返回,是比较费时间的,尤其是在递归深度较大时.所以个人觉得非递归的速度较好. 2.空间.递归函数很明显,始终是在入栈,只有在最后才出栈,大量的浪费了堆栈空间.在这一点上非递归肯定要比递归好. 总结.个人认为递归函数只是在程序书写上简单明了,但实际运行个人不看好. 一个是O(N) 一个是O(N*N)

景泰县17328509106: c 语言中 函数的递归调用能提高程序的执行效率吗? -
采豪施乐: 递归能提高编写效率, 写不好的话会拖慢执行效率,具体情况具体分析吧.

景泰县17328509106: C语言中递归是不是不好执行? -
采豪施乐: 奇怪你听谁说的,这句话应该不是这么说的,任何高级语言都有提供递归(可能也有的没有,这个不太清楚),但是递归的一个问题就是很容易出现溢出,因为需要保存大量的数据以进行分支选择以及回朔.所以语言本身的查错机制就比较重要,据我所知咱们可爱的C语言好像没啥防范措施哦.所以LZ那句话应该是C语言中的递归可靠性没什么保证.

景泰县17328509106: c语言的递归运算效率高不高 -
采豪施乐: 递归在处理问题时要反复调用函数,这增大了它的空间和时间开销,使用递归虽然可以简化思维过程,但效率上并不合算.效率和开销问题是递归最大的缺点. 虽然有这样的缺点,但是递归的力量仍然是巨大而不可忽视的,因为有些问题不使用递归算法是很难甚至无法解决的(比如汉诺塔问题).这时递归的作用就显示出来了.

景泰县17328509106: C语言中的递归函数有什么用途?什么意义? -
采豪施乐: 递归函数提供了不一样的思维方式,用他来解决往往程序要短小很多,思维也会很清晰.它很适合解决树中的一些问题,在编译原理中也可以经常看到.它的主要的解决问题的思维是这样的:先解决最基础的简单的问题;然后把复杂的问题归结...

景泰县17328509106: C语言,循环语句为什么会比递归语句跑的快 -
采豪施乐: 递归在运算的本质上与循环相同,一次递归就相当于一次循环,但递归是函数调用,与循环相比有很大的开销:参数压栈;当前指令执行指针PC跳转导致CPU指令缓存失效,等等,这些因素导致递归比循环缓慢. C语言不支持尾递归优化,对于支持尾递归优化的语言来说,按尾递归的写法(对递归函数的调用是函数中的最后一行),语言会把递归优化成循环指令,这样两者就没区别了.

景泰县17328509106: C语言关于函数的递归 -
采豪施乐: 你的递归程序是错的,我转来个对的,带讲解的,你看看.语言函数的递归和调用一、基本内容: C语言中的函数可以递归调用,即:可以直接(简单递归)或间接(间接递归)地自己调自己. 要点: 1、C语言函数可以递归调用. 2、...

景泰县17328509106: C语言递归调用的理解 -
采豪施乐: <可以自由转载,但请注明以下内容,谢谢合作!> <作者:Enoch Wang 引用自:http://chinawangquan.spaces.live.com>所谓递归,简而言之就是应用程序自身调用自身,以实现层次数据结构的查询和访问. 递归的使用可以使代码更简洁清晰...

景泰县17328509106: C语言里函数递归调用该怎样理解?? -
采豪施乐: 那你这样想吧.数学中不是有递推公式吗.比如:A1=1, An=An-1 +2.那么你用递归就是要想求An,只要An-1求出来,只要加2就是An啦.以此类推,只要知道A1就行啦.int labi(int n) { if(n==1) return(1); else return(labi(n-1)+2); } main() { int n,t; scanf("%d",&n); t=labi(n); printf("%d\n",t); }

景泰县17328509106: 在C语言中、递归函数通常是用来解决什么问题的?
采豪施乐: 是用来解决递归的问题.递归的问题有个特点,就是明显可以从中抽出规模较小,但是跟原来的问题一样的问题.比如求5的阶乘,它跟求4的阶乘是一样的问题,只是规模更小了点.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网