递归函数是什么意思?c语言递归函数详解
大家好,如果您还对递归函数是什么意思不太了解,没有关系,今天就由本站为大家分享递归函数是什么意思的知识,包括c语言递归函数详解的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
递归是什么意思啊
程序调用自身的编程技巧称为递归( recursion)。递归作为一种算法在程序设计语言中广泛应用。
一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
递归的缺点:
递归算法解题相对常用的算法如普通循环等,运行效率较低。因此,应该尽量避免使用递归,除非没有更好的算法或者某种特定情况,递归更为适合的时候。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。
以上内容参考:百度百科-递归
在C语言中什么叫递归
当某一问题可以表现为范围缩小的同性质问题的叠加,且利用范围缩小的问题的结果比较容易推导出最后解答的情况时,可以使用递归算法。这样一个问题的解答将依赖与一个同性质问题的解答,而解答这个同性质的问题实际上就是用不同的参数(体现范围缩小)来调用递归方法自身。
所有的递归算法都可以用条件-循环改写成非递归的形式,所以没有什么场合是一定要使用递归的。
递归的基本思想就是“自己调用自己”,一个使用递归技术的方法即是直接或间接的调用自身的方法。递归可以用简单的程序来解决某些复杂的计算问题,但是递归调用会占用大量的系统堆栈,内存耗用多,计算量大,在递归调用层次较多时使用要慎重。
c语言函数的递归调用
这段程序的意思是对传来的参数n,如果n<1,程序会崩溃;如果n>1则没大1,返回就多2,最后必然会执行c=10。比如n=5,则返回的是18((5-1)x2+10=18)
比如说做了5次递归,即n=5;执行的操作如下:
第1次调用(n=5),定义了一个intc;
第2次调用(n=4),定义了一个intc;
第3次调用(n=3),定义了一个intc;
第4次调用(n=2),定义了一个intc;
低5次调用(n=1),定义了一个intc;
n=1时,满足了条件n==1,故此时c=10;
第5次返回,此时第5次定义的c=age(intn)=10;前4次定义的intc没有值,下同
第4次返回,此时第4次定义的c=age(intn)+2=10+2=12
第3次返回,此时第3次定义的c=age(intn)+2=12+2=14
第2次返回,此时第2次定义的c=age(intn)+2=14+2=16
第一次返回,此时第一次定义的c=age(intn)+2=16+2=18。此时按下面的程序b接收了返回值
我觉得你应该注意的是age(intn)本身就代表一个int值,就算没有参数接收也可以参与到运算当中,就像这个例子一样。
程序:
#include<stdio.h>
intage(intn)
{intc;
if(n==1)
c=10;
else
c=age(n-1)+2;
returnc;
}
voidmain()
{
inta=0,b=0;
scanf("%d",&a);
b=age(a);
printf("resultis%d
",b);
}
文章分享结束,递归函数是什么意思和c语言递归函数详解的答案你都知道了吗?欢迎再次光临本站哦!